xref: /dflybsd-src/contrib/binutils-2.27/include/elf/common.h (revision e656dc90e3d65d744d534af2f5ea88cf8101ebcf)
1*a9fa9459Szrj /* ELF support for BFD.
2*a9fa9459Szrj    Copyright (C) 1991-2016 Free Software Foundation, Inc.
3*a9fa9459Szrj 
4*a9fa9459Szrj    Written by Fred Fish @ Cygnus Support, from information published
5*a9fa9459Szrj    in "UNIX System V Release 4, Programmers Guide: ANSI C and
6*a9fa9459Szrj    Programming Support Tools".
7*a9fa9459Szrj 
8*a9fa9459Szrj    This file is part of BFD, the Binary File Descriptor library.
9*a9fa9459Szrj 
10*a9fa9459Szrj    This program is free software; you can redistribute it and/or modify
11*a9fa9459Szrj    it under the terms of the GNU General Public License as published by
12*a9fa9459Szrj    the Free Software Foundation; either version 3 of the License, or
13*a9fa9459Szrj    (at your option) any later version.
14*a9fa9459Szrj 
15*a9fa9459Szrj    This program is distributed in the hope that it will be useful,
16*a9fa9459Szrj    but WITHOUT ANY WARRANTY; without even the implied warranty of
17*a9fa9459Szrj    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*a9fa9459Szrj    GNU General Public License for more details.
19*a9fa9459Szrj 
20*a9fa9459Szrj    You should have received a copy of the GNU General Public License
21*a9fa9459Szrj    along with this program; if not, write to the Free Software
22*a9fa9459Szrj    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
23*a9fa9459Szrj    MA 02110-1301, USA.  */
24*a9fa9459Szrj 
25*a9fa9459Szrj /* This file is part of ELF support for BFD, and contains the portions
26*a9fa9459Szrj    that are common to both the internal and external representations.
27*a9fa9459Szrj    For example, ELFMAG0 is the byte 0x7F in both the internal (in-memory)
28*a9fa9459Szrj    and external (in-file) representations.  */
29*a9fa9459Szrj 
30*a9fa9459Szrj #ifndef _ELF_COMMON_H
31*a9fa9459Szrj #define _ELF_COMMON_H
32*a9fa9459Szrj 
33*a9fa9459Szrj /* Fields in e_ident[].  */
34*a9fa9459Szrj 
35*a9fa9459Szrj #define EI_MAG0		0	/* File identification byte 0 index */
36*a9fa9459Szrj #define ELFMAG0		   0x7F	/* Magic number byte 0 */
37*a9fa9459Szrj 
38*a9fa9459Szrj #define EI_MAG1		1	/* File identification byte 1 index */
39*a9fa9459Szrj #define ELFMAG1		    'E'	/* Magic number byte 1 */
40*a9fa9459Szrj 
41*a9fa9459Szrj #define EI_MAG2		2	/* File identification byte 2 index */
42*a9fa9459Szrj #define ELFMAG2		    'L'	/* Magic number byte 2 */
43*a9fa9459Szrj 
44*a9fa9459Szrj #define EI_MAG3		3	/* File identification byte 3 index */
45*a9fa9459Szrj #define ELFMAG3		    'F'	/* Magic number byte 3 */
46*a9fa9459Szrj 
47*a9fa9459Szrj #define EI_CLASS	4	/* File class */
48*a9fa9459Szrj #define ELFCLASSNONE	      0	/* Invalid class */
49*a9fa9459Szrj #define ELFCLASS32	      1	/* 32-bit objects */
50*a9fa9459Szrj #define ELFCLASS64	      2	/* 64-bit objects */
51*a9fa9459Szrj 
52*a9fa9459Szrj #define EI_DATA		5	/* Data encoding */
53*a9fa9459Szrj #define ELFDATANONE	      0	/* Invalid data encoding */
54*a9fa9459Szrj #define ELFDATA2LSB	      1	/* 2's complement, little endian */
55*a9fa9459Szrj #define ELFDATA2MSB	      2	/* 2's complement, big endian */
56*a9fa9459Szrj 
57*a9fa9459Szrj #define EI_VERSION	6	/* File version */
58*a9fa9459Szrj 
59*a9fa9459Szrj #define EI_OSABI	7	/* Operating System/ABI indication */
60*a9fa9459Szrj #define ELFOSABI_NONE	      0	/* UNIX System V ABI */
61*a9fa9459Szrj #define ELFOSABI_HPUX	      1	/* HP-UX operating system */
62*a9fa9459Szrj #define ELFOSABI_NETBSD	      2	/* NetBSD */
63*a9fa9459Szrj #define ELFOSABI_GNU	      3	/* GNU */
64*a9fa9459Szrj #define ELFOSABI_LINUX	      3	/* Alias for ELFOSABI_GNU */
65*a9fa9459Szrj #define ELFOSABI_SOLARIS      6	/* Solaris */
66*a9fa9459Szrj #define ELFOSABI_AIX	      7	/* AIX */
67*a9fa9459Szrj #define ELFOSABI_IRIX	      8	/* IRIX */
68*a9fa9459Szrj #define ELFOSABI_FREEBSD      9	/* FreeBSD */
69*a9fa9459Szrj #define ELFOSABI_TRU64	     10	/* TRU64 UNIX */
70*a9fa9459Szrj #define ELFOSABI_MODESTO     11	/* Novell Modesto */
71*a9fa9459Szrj #define ELFOSABI_OPENBSD     12	/* OpenBSD */
72*a9fa9459Szrj #define ELFOSABI_OPENVMS     13	/* OpenVMS */
73*a9fa9459Szrj #define ELFOSABI_NSK	     14	/* Hewlett-Packard Non-Stop Kernel */
74*a9fa9459Szrj #define ELFOSABI_AROS	     15	/* AROS */
75*a9fa9459Szrj #define ELFOSABI_FENIXOS     16 /* FenixOS */
76*a9fa9459Szrj #define ELFOSABI_CLOUDABI    17 /* Nuxi CloudABI */
77*a9fa9459Szrj #define ELFOSABI_C6000_ELFABI 64 /* Bare-metal TMS320C6000 */
78*a9fa9459Szrj #define ELFOSABI_C6000_LINUX 65 /* Linux TMS320C6000 */
79*a9fa9459Szrj #define ELFOSABI_ARM	     97	/* ARM */
80*a9fa9459Szrj #define ELFOSABI_STANDALONE 255	/* Standalone (embedded) application */
81*a9fa9459Szrj 
82*a9fa9459Szrj #define EI_ABIVERSION	8	/* ABI version */
83*a9fa9459Szrj 
84*a9fa9459Szrj #define EI_PAD		9	/* Start of padding bytes */
85*a9fa9459Szrj 
86*a9fa9459Szrj 
87*a9fa9459Szrj /* Values for e_type, which identifies the object file type.  */
88*a9fa9459Szrj 
89*a9fa9459Szrj #define ET_NONE		0	/* No file type */
90*a9fa9459Szrj #define ET_REL		1	/* Relocatable file */
91*a9fa9459Szrj #define ET_EXEC		2	/* Executable file */
92*a9fa9459Szrj #define ET_DYN		3	/* Shared object file */
93*a9fa9459Szrj #define ET_CORE		4	/* Core file */
94*a9fa9459Szrj #define ET_LOOS		0xFE00	/* Operating system-specific */
95*a9fa9459Szrj #define ET_HIOS		0xFEFF	/* Operating system-specific */
96*a9fa9459Szrj #define ET_LOPROC	0xFF00	/* Processor-specific */
97*a9fa9459Szrj #define ET_HIPROC	0xFFFF	/* Processor-specific */
98*a9fa9459Szrj 
99*a9fa9459Szrj /* Values for e_machine, which identifies the architecture.  These numbers
100*a9fa9459Szrj    are officially assigned by registry@sco.com.  See below for a list of
101*a9fa9459Szrj    ad-hoc numbers used during initial development.  */
102*a9fa9459Szrj 
103*a9fa9459Szrj #define EM_NONE		  0	/* No machine */
104*a9fa9459Szrj #define EM_M32		  1	/* AT&T WE 32100 */
105*a9fa9459Szrj #define EM_SPARC	  2	/* SUN SPARC */
106*a9fa9459Szrj #define EM_386		  3	/* Intel 80386 */
107*a9fa9459Szrj #define EM_68K		  4	/* Motorola m68k family */
108*a9fa9459Szrj #define EM_88K		  5	/* Motorola m88k family */
109*a9fa9459Szrj #define EM_IAMCU	  6	/* Intel MCU */
110*a9fa9459Szrj #define EM_860		  7	/* Intel 80860 */
111*a9fa9459Szrj #define EM_MIPS		  8	/* MIPS R3000 (officially, big-endian only) */
112*a9fa9459Szrj #define EM_S370		  9	/* IBM System/370 */
113*a9fa9459Szrj #define EM_MIPS_RS3_LE	 10	/* MIPS R3000 little-endian (Oct 4 1999 Draft) Deprecated */
114*a9fa9459Szrj #define EM_res011	 11	/* Reserved */
115*a9fa9459Szrj #define EM_res012	 12	/* Reserved */
116*a9fa9459Szrj #define EM_res013	 13	/* Reserved */
117*a9fa9459Szrj #define EM_res014	 14	/* Reserved */
118*a9fa9459Szrj #define EM_PARISC	 15	/* HPPA */
119*a9fa9459Szrj #define EM_res016	 16	/* Reserved */
120*a9fa9459Szrj #define EM_VPP550	 17	/* Fujitsu VPP500 */
121*a9fa9459Szrj #define EM_SPARC32PLUS	 18	/* Sun's "v8plus" */
122*a9fa9459Szrj #define EM_960		 19	/* Intel 80960 */
123*a9fa9459Szrj #define EM_PPC		 20	/* PowerPC */
124*a9fa9459Szrj #define EM_PPC64	 21	/* 64-bit PowerPC */
125*a9fa9459Szrj #define EM_S390		 22	/* IBM S/390 */
126*a9fa9459Szrj #define EM_SPU		 23	/* Sony/Toshiba/IBM SPU */
127*a9fa9459Szrj #define EM_res024	 24	/* Reserved */
128*a9fa9459Szrj #define EM_res025	 25	/* Reserved */
129*a9fa9459Szrj #define EM_res026	 26	/* Reserved */
130*a9fa9459Szrj #define EM_res027	 27	/* Reserved */
131*a9fa9459Szrj #define EM_res028	 28	/* Reserved */
132*a9fa9459Szrj #define EM_res029	 29	/* Reserved */
133*a9fa9459Szrj #define EM_res030	 30	/* Reserved */
134*a9fa9459Szrj #define EM_res031	 31	/* Reserved */
135*a9fa9459Szrj #define EM_res032	 32	/* Reserved */
136*a9fa9459Szrj #define EM_res033	 33	/* Reserved */
137*a9fa9459Szrj #define EM_res034	 34	/* Reserved */
138*a9fa9459Szrj #define EM_res035	 35	/* Reserved */
139*a9fa9459Szrj #define EM_V800		 36	/* NEC V800 series */
140*a9fa9459Szrj #define EM_FR20		 37	/* Fujitsu FR20 */
141*a9fa9459Szrj #define EM_RH32		 38	/* TRW RH32 */
142*a9fa9459Szrj #define EM_MCORE	 39	/* Motorola M*Core */ /* May also be taken by Fujitsu MMA */
143*a9fa9459Szrj #define EM_RCE		 39	/* Old name for MCore */
144*a9fa9459Szrj #define EM_ARM		 40	/* ARM */
145*a9fa9459Szrj #define EM_OLD_ALPHA	 41	/* Digital Alpha */
146*a9fa9459Szrj #define EM_SH		 42	/* Renesas (formerly Hitachi) / SuperH SH */
147*a9fa9459Szrj #define EM_SPARCV9	 43	/* SPARC v9 64-bit */
148*a9fa9459Szrj #define EM_TRICORE	 44	/* Siemens Tricore embedded processor */
149*a9fa9459Szrj #define EM_ARC		 45	/* ARC Cores */
150*a9fa9459Szrj #define EM_H8_300	 46	/* Renesas (formerly Hitachi) H8/300 */
151*a9fa9459Szrj #define EM_H8_300H	 47	/* Renesas (formerly Hitachi) H8/300H */
152*a9fa9459Szrj #define EM_H8S		 48	/* Renesas (formerly Hitachi) H8S */
153*a9fa9459Szrj #define EM_H8_500	 49	/* Renesas (formerly Hitachi) H8/500 */
154*a9fa9459Szrj #define EM_IA_64	 50	/* Intel IA-64 Processor */
155*a9fa9459Szrj #define EM_MIPS_X	 51	/* Stanford MIPS-X */
156*a9fa9459Szrj #define EM_COLDFIRE	 52	/* Motorola Coldfire */
157*a9fa9459Szrj #define EM_68HC12	 53	/* Motorola M68HC12 */
158*a9fa9459Szrj #define EM_MMA		 54	/* Fujitsu Multimedia Accelerator */
159*a9fa9459Szrj #define EM_PCP		 55	/* Siemens PCP */
160*a9fa9459Szrj #define EM_NCPU		 56	/* Sony nCPU embedded RISC processor */
161*a9fa9459Szrj #define EM_NDR1		 57	/* Denso NDR1 microprocessor */
162*a9fa9459Szrj #define EM_STARCORE	 58	/* Motorola Star*Core processor */
163*a9fa9459Szrj #define EM_ME16		 59	/* Toyota ME16 processor */
164*a9fa9459Szrj #define EM_ST100	 60	/* STMicroelectronics ST100 processor */
165*a9fa9459Szrj #define EM_TINYJ	 61	/* Advanced Logic Corp. TinyJ embedded processor */
166*a9fa9459Szrj #define EM_X86_64	 62	/* Advanced Micro Devices X86-64 processor */
167*a9fa9459Szrj #define EM_PDSP		 63	/* Sony DSP Processor */
168*a9fa9459Szrj #define EM_PDP10	 64	/* Digital Equipment Corp. PDP-10 */
169*a9fa9459Szrj #define EM_PDP11	 65	/* Digital Equipment Corp. PDP-11 */
170*a9fa9459Szrj #define EM_FX66		 66	/* Siemens FX66 microcontroller */
171*a9fa9459Szrj #define EM_ST9PLUS	 67	/* STMicroelectronics ST9+ 8/16 bit microcontroller */
172*a9fa9459Szrj #define EM_ST7		 68	/* STMicroelectronics ST7 8-bit microcontroller */
173*a9fa9459Szrj #define EM_68HC16	 69	/* Motorola MC68HC16 Microcontroller */
174*a9fa9459Szrj #define EM_68HC11	 70	/* Motorola MC68HC11 Microcontroller */
175*a9fa9459Szrj #define EM_68HC08	 71	/* Motorola MC68HC08 Microcontroller */
176*a9fa9459Szrj #define EM_68HC05	 72	/* Motorola MC68HC05 Microcontroller */
177*a9fa9459Szrj #define EM_SVX		 73	/* Silicon Graphics SVx */
178*a9fa9459Szrj #define EM_ST19		 74	/* STMicroelectronics ST19 8-bit cpu */
179*a9fa9459Szrj #define EM_VAX		 75	/* Digital VAX */
180*a9fa9459Szrj #define EM_CRIS		 76	/* Axis Communications 32-bit embedded processor */
181*a9fa9459Szrj #define EM_JAVELIN	 77	/* Infineon Technologies 32-bit embedded cpu */
182*a9fa9459Szrj #define EM_FIREPATH	 78	/* Element 14 64-bit DSP processor */
183*a9fa9459Szrj #define EM_ZSP		 79	/* LSI Logic's 16-bit DSP processor */
184*a9fa9459Szrj #define EM_MMIX		 80	/* Donald Knuth's educational 64-bit processor */
185*a9fa9459Szrj #define EM_HUANY	 81	/* Harvard's machine-independent format */
186*a9fa9459Szrj #define EM_PRISM	 82	/* SiTera Prism */
187*a9fa9459Szrj #define EM_AVR		 83	/* Atmel AVR 8-bit microcontroller */
188*a9fa9459Szrj #define EM_FR30		 84	/* Fujitsu FR30 */
189*a9fa9459Szrj #define EM_D10V		 85	/* Mitsubishi D10V */
190*a9fa9459Szrj #define EM_D30V		 86	/* Mitsubishi D30V */
191*a9fa9459Szrj #define EM_V850		 87	/* Renesas V850 (formerly NEC V850) */
192*a9fa9459Szrj #define EM_M32R		 88	/* Renesas M32R (formerly Mitsubishi M32R) */
193*a9fa9459Szrj #define EM_MN10300	 89	/* Matsushita MN10300 */
194*a9fa9459Szrj #define EM_MN10200	 90	/* Matsushita MN10200 */
195*a9fa9459Szrj #define EM_PJ		 91	/* picoJava */
196*a9fa9459Szrj #define EM_OR1K		 92	/* OpenRISC 1000 32-bit embedded processor */
197*a9fa9459Szrj #define EM_ARC_COMPACT	 93	/* ARC International ARCompact processor */
198*a9fa9459Szrj #define EM_XTENSA	 94	/* Tensilica Xtensa Architecture */
199*a9fa9459Szrj #define EM_VIDEOCORE	 95	/* Alphamosaic VideoCore processor */
200*a9fa9459Szrj #define EM_TMM_GPP	 96	/* Thompson Multimedia General Purpose Processor */
201*a9fa9459Szrj #define EM_NS32K	 97	/* National Semiconductor 32000 series */
202*a9fa9459Szrj #define EM_TPC		 98	/* Tenor Network TPC processor */
203*a9fa9459Szrj #define EM_SNP1K	 99	/* Trebia SNP 1000 processor */
204*a9fa9459Szrj #define EM_ST200	100	/* STMicroelectronics ST200 microcontroller */
205*a9fa9459Szrj #define EM_IP2K		101	/* Ubicom IP2022 micro controller */
206*a9fa9459Szrj #define EM_MAX		102	/* MAX Processor */
207*a9fa9459Szrj #define EM_CR		103	/* National Semiconductor CompactRISC */
208*a9fa9459Szrj #define EM_F2MC16	104	/* Fujitsu F2MC16 */
209*a9fa9459Szrj #define EM_MSP430	105	/* TI msp430 micro controller */
210*a9fa9459Szrj #define EM_BLACKFIN	106	/* ADI Blackfin */
211*a9fa9459Szrj #define EM_SE_C33	107	/* S1C33 Family of Seiko Epson processors */
212*a9fa9459Szrj #define EM_SEP		108	/* Sharp embedded microprocessor */
213*a9fa9459Szrj #define EM_ARCA		109	/* Arca RISC Microprocessor */
214*a9fa9459Szrj #define EM_UNICORE	110	/* Microprocessor series from PKU-Unity Ltd. and MPRC of Peking University */
215*a9fa9459Szrj #define EM_EXCESS	111	/* eXcess: 16/32/64-bit configurable embedded CPU */
216*a9fa9459Szrj #define EM_DXP		112	/* Icera Semiconductor Inc. Deep Execution Processor */
217*a9fa9459Szrj #define EM_ALTERA_NIOS2	113	/* Altera Nios II soft-core processor */
218*a9fa9459Szrj #define EM_CRX		114	/* National Semiconductor CRX */
219*a9fa9459Szrj #define EM_XGATE	115	/* Motorola XGATE embedded processor */
220*a9fa9459Szrj #define EM_C166		116	/* Infineon C16x/XC16x processor */
221*a9fa9459Szrj #define EM_M16C		117	/* Renesas M16C series microprocessors */
222*a9fa9459Szrj #define EM_DSPIC30F	118	/* Microchip Technology dsPIC30F Digital Signal Controller */
223*a9fa9459Szrj #define EM_CE		119	/* Freescale Communication Engine RISC core */
224*a9fa9459Szrj #define EM_M32C		120	/* Renesas M32C series microprocessors */
225*a9fa9459Szrj #define EM_res121	121	/* Reserved */
226*a9fa9459Szrj #define EM_res122	122	/* Reserved */
227*a9fa9459Szrj #define EM_res123	123	/* Reserved */
228*a9fa9459Szrj #define EM_res124	124	/* Reserved */
229*a9fa9459Szrj #define EM_res125	125	/* Reserved */
230*a9fa9459Szrj #define EM_res126	126	/* Reserved */
231*a9fa9459Szrj #define EM_res127	127	/* Reserved */
232*a9fa9459Szrj #define EM_res128	128	/* Reserved */
233*a9fa9459Szrj #define EM_res129	129	/* Reserved */
234*a9fa9459Szrj #define EM_res130	130	/* Reserved */
235*a9fa9459Szrj #define EM_TSK3000	131	/* Altium TSK3000 core */
236*a9fa9459Szrj #define EM_RS08		132	/* Freescale RS08 embedded processor */
237*a9fa9459Szrj #define EM_res133	133	/* Reserved */
238*a9fa9459Szrj #define EM_ECOG2	134	/* Cyan Technology eCOG2 microprocessor */
239*a9fa9459Szrj #define EM_SCORE	135	/* Sunplus Score */
240*a9fa9459Szrj #define EM_SCORE7	135	/* Sunplus S+core7 RISC processor */
241*a9fa9459Szrj #define EM_DSP24	136	/* New Japan Radio (NJR) 24-bit DSP Processor */
242*a9fa9459Szrj #define EM_VIDEOCORE3	137	/* Broadcom VideoCore III processor */
243*a9fa9459Szrj #define EM_LATTICEMICO32 138	/* RISC processor for Lattice FPGA architecture */
244*a9fa9459Szrj #define EM_SE_C17	139	/* Seiko Epson C17 family */
245*a9fa9459Szrj #define EM_TI_C6000	140	/* Texas Instruments TMS320C6000 DSP family */
246*a9fa9459Szrj #define EM_TI_C2000	141	/* Texas Instruments TMS320C2000 DSP family */
247*a9fa9459Szrj #define EM_TI_C5500	142	/* Texas Instruments TMS320C55x DSP family */
248*a9fa9459Szrj #define EM_res143	143	/* Reserved */
249*a9fa9459Szrj #define EM_res144	144	/* Reserved */
250*a9fa9459Szrj #define EM_res145	145	/* Reserved */
251*a9fa9459Szrj #define EM_res146	146	/* Reserved */
252*a9fa9459Szrj #define EM_res147	147	/* Reserved */
253*a9fa9459Szrj #define EM_res148	148	/* Reserved */
254*a9fa9459Szrj #define EM_res149	149	/* Reserved */
255*a9fa9459Szrj #define EM_res150	150	/* Reserved */
256*a9fa9459Szrj #define EM_res151	151	/* Reserved */
257*a9fa9459Szrj #define EM_res152	152	/* Reserved */
258*a9fa9459Szrj #define EM_res153	153	/* Reserved */
259*a9fa9459Szrj #define EM_res154	154	/* Reserved */
260*a9fa9459Szrj #define EM_res155	155	/* Reserved */
261*a9fa9459Szrj #define EM_res156	156	/* Reserved */
262*a9fa9459Szrj #define EM_res157	157	/* Reserved */
263*a9fa9459Szrj #define EM_res158	158	/* Reserved */
264*a9fa9459Szrj #define EM_res159	159	/* Reserved */
265*a9fa9459Szrj #define EM_MMDSP_PLUS	160	/* STMicroelectronics 64bit VLIW Data Signal Processor */
266*a9fa9459Szrj #define EM_CYPRESS_M8C	161	/* Cypress M8C microprocessor */
267*a9fa9459Szrj #define EM_R32C		162	/* Renesas R32C series microprocessors */
268*a9fa9459Szrj #define EM_TRIMEDIA	163	/* NXP Semiconductors TriMedia architecture family */
269*a9fa9459Szrj #define EM_QDSP6	164	/* QUALCOMM DSP6 Processor */
270*a9fa9459Szrj #define EM_8051		165	/* Intel 8051 and variants */
271*a9fa9459Szrj #define EM_STXP7X	166	/* STMicroelectronics STxP7x family */
272*a9fa9459Szrj #define EM_NDS32	167	/* Andes Technology compact code size embedded RISC processor family */
273*a9fa9459Szrj #define EM_ECOG1	168	/* Cyan Technology eCOG1X family */
274*a9fa9459Szrj #define EM_ECOG1X	168	/* Cyan Technology eCOG1X family */
275*a9fa9459Szrj #define EM_MAXQ30	169	/* Dallas Semiconductor MAXQ30 Core Micro-controllers */
276*a9fa9459Szrj #define EM_XIMO16	170	/* New Japan Radio (NJR) 16-bit DSP Processor */
277*a9fa9459Szrj #define EM_MANIK	171	/* M2000 Reconfigurable RISC Microprocessor */
278*a9fa9459Szrj #define EM_CRAYNV2	172	/* Cray Inc. NV2 vector architecture */
279*a9fa9459Szrj #define EM_RX		173	/* Renesas RX family */
280*a9fa9459Szrj #define EM_METAG	174	/* Imagination Technologies Meta processor architecture */
281*a9fa9459Szrj #define EM_MCST_ELBRUS	175	/* MCST Elbrus general purpose hardware architecture */
282*a9fa9459Szrj #define EM_ECOG16	176	/* Cyan Technology eCOG16 family */
283*a9fa9459Szrj #define EM_CR16		177	/* National Semiconductor CompactRISC 16-bit processor */
284*a9fa9459Szrj #define EM_ETPU		178	/* Freescale Extended Time Processing Unit */
285*a9fa9459Szrj #define EM_SLE9X	179	/* Infineon Technologies SLE9X core */
286*a9fa9459Szrj #define EM_L1OM		180	/* Intel L1OM */
287*a9fa9459Szrj #define EM_K1OM		181	/* Intel K1OM */
288*a9fa9459Szrj #define EM_INTEL182	182	/* Reserved by Intel */
289*a9fa9459Szrj #define EM_AARCH64	183	/* ARM 64-bit architecture */
290*a9fa9459Szrj #define EM_ARM184	184	/* Reserved by ARM */
291*a9fa9459Szrj #define EM_AVR32	185	/* Atmel Corporation 32-bit microprocessor family */
292*a9fa9459Szrj #define EM_STM8	186	/* STMicroeletronics STM8 8-bit microcontroller */
293*a9fa9459Szrj #define EM_TILE64	187	/* Tilera TILE64 multicore architecture family */
294*a9fa9459Szrj #define EM_TILEPRO	188	/* Tilera TILEPro multicore architecture family */
295*a9fa9459Szrj #define EM_MICROBLAZE	189	/* Xilinx MicroBlaze 32-bit RISC soft processor core */
296*a9fa9459Szrj #define EM_CUDA		190	/* NVIDIA CUDA architecture */
297*a9fa9459Szrj #define EM_TILEGX	191	/* Tilera TILE-Gx multicore architecture family */
298*a9fa9459Szrj #define EM_ARC_COMPACT2 195	/* Synopsys ARCompact V2 */
299*a9fa9459Szrj #define EM_RL78		197	/* Renesas RL78 family.  */
300*a9fa9459Szrj #define EM_78K0R	199	/* Renesas 78K0R.  */
301*a9fa9459Szrj #define EM_INTEL205	205	/* Reserved by Intel */
302*a9fa9459Szrj #define EM_INTEL206	206	/* Reserved by Intel */
303*a9fa9459Szrj #define EM_INTEL207	207	/* Reserved by Intel */
304*a9fa9459Szrj #define EM_INTEL208	208	/* Reserved by Intel */
305*a9fa9459Szrj #define EM_INTEL209	209	/* Reserved by Intel */
306*a9fa9459Szrj #define EM_VISIUM	221	/* Controls and Data Services VISIUMcore processor */
307*a9fa9459Szrj #define EM_FT32         222     /* FTDI Chip FT32 high performance 32-bit RISC architecture */
308*a9fa9459Szrj #define EM_MOXIE        223     /* Moxie processor family */
309*a9fa9459Szrj 
310*a9fa9459Szrj /* If it is necessary to assign new unofficial EM_* values, please pick large
311*a9fa9459Szrj    random numbers (0x8523, 0xa7f2, etc.) to minimize the chances of collision
312*a9fa9459Szrj    with official or non-GNU unofficial values.
313*a9fa9459Szrj 
314*a9fa9459Szrj    NOTE: Do not just increment the most recent number by one.
315*a9fa9459Szrj    Somebody else somewhere will do exactly the same thing, and you
316*a9fa9459Szrj    will have a collision.  Instead, pick a random number.
317*a9fa9459Szrj 
318*a9fa9459Szrj    Normally, each entity or maintainer responsible for a machine with an
319*a9fa9459Szrj    unofficial e_machine number should eventually ask registry@sco.com for
320*a9fa9459Szrj    an officially blessed number to be added to the list above.	*/
321*a9fa9459Szrj 
322*a9fa9459Szrj /* Old version of Sparc v9, from before the ABI;
323*a9fa9459Szrj    This should be removed shortly.  */
324*a9fa9459Szrj #define EM_OLD_SPARCV9		11
325*a9fa9459Szrj 
326*a9fa9459Szrj /* Old version of PowerPC, this should be removed shortly. */
327*a9fa9459Szrj #define EM_PPC_OLD		17
328*a9fa9459Szrj 
329*a9fa9459Szrj /* picoJava */
330*a9fa9459Szrj #define EM_PJ_OLD		99
331*a9fa9459Szrj 
332*a9fa9459Szrj /* Old, unofficial value for National Semiconductor CompactRISC - CR16 */
333*a9fa9459Szrj #define EM_CR16_OLD		115
334*a9fa9459Szrj 
335*a9fa9459Szrj /* AVR magic number.  Written in the absense of an ABI.  */
336*a9fa9459Szrj #define EM_AVR_OLD		0x1057
337*a9fa9459Szrj 
338*a9fa9459Szrj /* MSP430 magic number.  Written in the absense of everything.  */
339*a9fa9459Szrj #define EM_MSP430_OLD		0x1059
340*a9fa9459Szrj 
341*a9fa9459Szrj /* Morpho MT.   Written in the absense of an ABI.  */
342*a9fa9459Szrj #define EM_MT			0x2530
343*a9fa9459Szrj 
344*a9fa9459Szrj /* FR30 magic number - no EABI available.  */
345*a9fa9459Szrj #define EM_CYGNUS_FR30		0x3330
346*a9fa9459Szrj 
347*a9fa9459Szrj /* DLX magic number.  Written in the absense of an ABI.  */
348*a9fa9459Szrj #define EM_DLX			0x5aa5
349*a9fa9459Szrj 
350*a9fa9459Szrj /* FRV magic number - no EABI available??.  */
351*a9fa9459Szrj #define EM_CYGNUS_FRV		0x5441
352*a9fa9459Szrj 
353*a9fa9459Szrj /* Infineon Technologies 16-bit microcontroller with C166-V2 core.  */
354*a9fa9459Szrj #define EM_XC16X		0x4688
355*a9fa9459Szrj 
356*a9fa9459Szrj /* D10V backend magic number.  Written in the absence of an ABI.  */
357*a9fa9459Szrj #define EM_CYGNUS_D10V		0x7650
358*a9fa9459Szrj 
359*a9fa9459Szrj /* D30V backend magic number.  Written in the absence of an ABI.  */
360*a9fa9459Szrj #define EM_CYGNUS_D30V		0x7676
361*a9fa9459Szrj 
362*a9fa9459Szrj /* Ubicom IP2xxx;   Written in the absense of an ABI.  */
363*a9fa9459Szrj #define EM_IP2K_OLD		0x8217
364*a9fa9459Szrj 
365*a9fa9459Szrj /* Cygnus PowerPC ELF backend.  Written in the absence of an ABI.  */
366*a9fa9459Szrj #define EM_CYGNUS_POWERPC	0x9025
367*a9fa9459Szrj 
368*a9fa9459Szrj /* Alpha backend magic number.  Written in the absence of an ABI.  */
369*a9fa9459Szrj #define EM_ALPHA		0x9026
370*a9fa9459Szrj 
371*a9fa9459Szrj /* Cygnus M32R ELF backend.  Written in the absence of an ABI.  */
372*a9fa9459Szrj #define EM_CYGNUS_M32R		0x9041
373*a9fa9459Szrj 
374*a9fa9459Szrj /* V850 backend magic number.  Written in the absense of an ABI.  */
375*a9fa9459Szrj #define EM_CYGNUS_V850		0x9080
376*a9fa9459Szrj 
377*a9fa9459Szrj /* old S/390 backend magic number. Written in the absence of an ABI.  */
378*a9fa9459Szrj #define EM_S390_OLD		0xa390
379*a9fa9459Szrj 
380*a9fa9459Szrj /* Old, unofficial value for Xtensa.  */
381*a9fa9459Szrj #define EM_XTENSA_OLD		0xabc7
382*a9fa9459Szrj 
383*a9fa9459Szrj #define EM_XSTORMY16		0xad45
384*a9fa9459Szrj 
385*a9fa9459Szrj /* mn10200 and mn10300 backend magic numbers.
386*a9fa9459Szrj    Written in the absense of an ABI.  */
387*a9fa9459Szrj #define EM_CYGNUS_MN10300	0xbeef
388*a9fa9459Szrj #define EM_CYGNUS_MN10200	0xdead
389*a9fa9459Szrj 
390*a9fa9459Szrj /* Renesas M32C and M16C.  */
391*a9fa9459Szrj #define EM_M32C_OLD		0xFEB0
392*a9fa9459Szrj 
393*a9fa9459Szrj /* Vitesse IQ2000.  */
394*a9fa9459Szrj #define EM_IQ2000		0xFEBA
395*a9fa9459Szrj 
396*a9fa9459Szrj /* NIOS magic number - no EABI available.  */
397*a9fa9459Szrj #define EM_NIOS32		0xFEBB
398*a9fa9459Szrj 
399*a9fa9459Szrj #define EM_CYGNUS_MEP		0xF00D  /* Toshiba MeP */
400*a9fa9459Szrj 
401*a9fa9459Szrj /* Old, unofficial value for Moxie.  */
402*a9fa9459Szrj #define EM_MOXIE_OLD            0xFEED
403*a9fa9459Szrj 
404*a9fa9459Szrj /* Old Sunplus S+core7 backend magic number. Written in the absence of an ABI.  */
405*a9fa9459Szrj #define EM_SCORE_OLD            95
406*a9fa9459Szrj 
407*a9fa9459Szrj #define EM_MICROBLAZE_OLD	0xbaab	/* Old MicroBlaze */
408*a9fa9459Szrj 
409*a9fa9459Szrj #define EM_ADAPTEVA_EPIPHANY   0x1223  /* Adapteva's Epiphany architecture.  */
410*a9fa9459Szrj 
411*a9fa9459Szrj /* Old constant that might be in use by some software. */
412*a9fa9459Szrj #define EM_OPENRISC		EM_OR1K
413*a9fa9459Szrj 
414*a9fa9459Szrj /* See the above comment before you add a new EM_* value here.  */
415*a9fa9459Szrj 
416*a9fa9459Szrj /* Values for e_version.  */
417*a9fa9459Szrj 
418*a9fa9459Szrj #define EV_NONE		0		/* Invalid ELF version */
419*a9fa9459Szrj #define EV_CURRENT	1		/* Current version */
420*a9fa9459Szrj 
421*a9fa9459Szrj /* Value for e_phnum. */
422*a9fa9459Szrj #define PN_XNUM		0xffff		/* Extended numbering */
423*a9fa9459Szrj 
424*a9fa9459Szrj /* Values for program header, p_type field.  */
425*a9fa9459Szrj 
426*a9fa9459Szrj #define PT_NULL		0		/* Program header table entry unused */
427*a9fa9459Szrj #define PT_LOAD		1		/* Loadable program segment */
428*a9fa9459Szrj #define PT_DYNAMIC	2		/* Dynamic linking information */
429*a9fa9459Szrj #define PT_INTERP	3		/* Program interpreter */
430*a9fa9459Szrj #define PT_NOTE		4		/* Auxiliary information */
431*a9fa9459Szrj #define PT_SHLIB	5		/* Reserved, unspecified semantics */
432*a9fa9459Szrj #define PT_PHDR		6		/* Entry for header table itself */
433*a9fa9459Szrj #define PT_TLS		7		/* Thread local storage segment */
434*a9fa9459Szrj #define PT_LOOS		0x60000000	/* OS-specific */
435*a9fa9459Szrj #define PT_HIOS		0x6fffffff	/* OS-specific */
436*a9fa9459Szrj #define PT_LOPROC	0x70000000	/* Processor-specific */
437*a9fa9459Szrj #define PT_HIPROC	0x7FFFFFFF	/* Processor-specific */
438*a9fa9459Szrj 
439*a9fa9459Szrj #define PT_GNU_EH_FRAME	(PT_LOOS + 0x474e550) /* Frame unwind information */
440*a9fa9459Szrj #define PT_SUNW_EH_FRAME PT_GNU_EH_FRAME      /* Solaris uses the same value */
441*a9fa9459Szrj #define PT_GNU_STACK	(PT_LOOS + 0x474e551) /* Stack flags */
442*a9fa9459Szrj #define PT_GNU_RELRO	(PT_LOOS + 0x474e552) /* Read-only after relocation */
443*a9fa9459Szrj 
444*a9fa9459Szrj /* Program segment permissions, in program header p_flags field.  */
445*a9fa9459Szrj 
446*a9fa9459Szrj #define PF_X		(1 << 0)	/* Segment is executable */
447*a9fa9459Szrj #define PF_W		(1 << 1)	/* Segment is writable */
448*a9fa9459Szrj #define PF_R		(1 << 2)	/* Segment is readable */
449*a9fa9459Szrj /* #define PF_MASKOS	0x0F000000    *//* OS-specific reserved bits */
450*a9fa9459Szrj #define PF_MASKOS	0x0FF00000	/* New value, Oct 4, 1999 Draft */
451*a9fa9459Szrj #define PF_MASKPROC	0xF0000000	/* Processor-specific reserved bits */
452*a9fa9459Szrj 
453*a9fa9459Szrj /* Values for section header, sh_type field.  */
454*a9fa9459Szrj 
455*a9fa9459Szrj #define SHT_NULL	0		/* Section header table entry unused */
456*a9fa9459Szrj #define SHT_PROGBITS	1		/* Program specific (private) data */
457*a9fa9459Szrj #define SHT_SYMTAB	2		/* Link editing symbol table */
458*a9fa9459Szrj #define SHT_STRTAB	3		/* A string table */
459*a9fa9459Szrj #define SHT_RELA	4		/* Relocation entries with addends */
460*a9fa9459Szrj #define SHT_HASH	5		/* A symbol hash table */
461*a9fa9459Szrj #define SHT_DYNAMIC	6		/* Information for dynamic linking */
462*a9fa9459Szrj #define SHT_NOTE	7		/* Information that marks file */
463*a9fa9459Szrj #define SHT_NOBITS	8		/* Section occupies no space in file */
464*a9fa9459Szrj #define SHT_REL		9		/* Relocation entries, no addends */
465*a9fa9459Szrj #define SHT_SHLIB	10		/* Reserved, unspecified semantics */
466*a9fa9459Szrj #define SHT_DYNSYM	11		/* Dynamic linking symbol table */
467*a9fa9459Szrj 
468*a9fa9459Szrj #define SHT_INIT_ARRAY	  14		/* Array of ptrs to init functions */
469*a9fa9459Szrj #define SHT_FINI_ARRAY	  15		/* Array of ptrs to finish functions */
470*a9fa9459Szrj #define SHT_PREINIT_ARRAY 16		/* Array of ptrs to pre-init funcs */
471*a9fa9459Szrj #define SHT_GROUP	  17		/* Section contains a section group */
472*a9fa9459Szrj #define SHT_SYMTAB_SHNDX  18		/* Indicies for SHN_XINDEX entries */
473*a9fa9459Szrj 
474*a9fa9459Szrj #define SHT_LOOS	0x60000000	/* First of OS specific semantics */
475*a9fa9459Szrj #define SHT_HIOS	0x6fffffff	/* Last of OS specific semantics */
476*a9fa9459Szrj 
477*a9fa9459Szrj #define SHT_GNU_INCREMENTAL_INPUTS 0x6fff4700   /* incremental build data */
478*a9fa9459Szrj #define SHT_GNU_ATTRIBUTES 0x6ffffff5	/* Object attributes */
479*a9fa9459Szrj #define SHT_GNU_HASH	0x6ffffff6	/* GNU style symbol hash table */
480*a9fa9459Szrj #define SHT_GNU_LIBLIST	0x6ffffff7	/* List of prelink dependencies */
481*a9fa9459Szrj 
482*a9fa9459Szrj /* The next three section types are defined by Solaris, and are named
483*a9fa9459Szrj    SHT_SUNW*.  We use them in GNU code, so we also define SHT_GNU*
484*a9fa9459Szrj    versions.  */
485*a9fa9459Szrj #define SHT_SUNW_verdef	0x6ffffffd	/* Versions defined by file */
486*a9fa9459Szrj #define SHT_SUNW_verneed 0x6ffffffe	/* Versions needed by file */
487*a9fa9459Szrj #define SHT_SUNW_versym	0x6fffffff	/* Symbol versions */
488*a9fa9459Szrj 
489*a9fa9459Szrj #define SHT_GNU_verdef	SHT_SUNW_verdef
490*a9fa9459Szrj #define SHT_GNU_verneed	SHT_SUNW_verneed
491*a9fa9459Szrj #define SHT_GNU_versym	SHT_SUNW_versym
492*a9fa9459Szrj 
493*a9fa9459Szrj #define SHT_LOPROC	0x70000000	/* Processor-specific semantics, lo */
494*a9fa9459Szrj #define SHT_HIPROC	0x7FFFFFFF	/* Processor-specific semantics, hi */
495*a9fa9459Szrj #define SHT_LOUSER	0x80000000	/* Application-specific semantics */
496*a9fa9459Szrj /* #define SHT_HIUSER	0x8FFFFFFF    *//* Application-specific semantics */
497*a9fa9459Szrj #define SHT_HIUSER	0xFFFFFFFF	/* New value, defined in Oct 4, 1999 Draft */
498*a9fa9459Szrj 
499*a9fa9459Szrj /* Values for section header, sh_flags field.  */
500*a9fa9459Szrj 
501*a9fa9459Szrj #define SHF_WRITE	(1 << 0)	/* Writable data during execution */
502*a9fa9459Szrj #define SHF_ALLOC	(1 << 1)	/* Occupies memory during execution */
503*a9fa9459Szrj #define SHF_EXECINSTR	(1 << 2)	/* Executable machine instructions */
504*a9fa9459Szrj #define SHF_MERGE	(1 << 4)	/* Data in this section can be merged */
505*a9fa9459Szrj #define SHF_STRINGS	(1 << 5)	/* Contains null terminated character strings */
506*a9fa9459Szrj #define SHF_INFO_LINK	(1 << 6)	/* sh_info holds section header table index */
507*a9fa9459Szrj #define SHF_LINK_ORDER	(1 << 7)	/* Preserve section ordering when linking */
508*a9fa9459Szrj #define SHF_OS_NONCONFORMING (1 << 8)	/* OS specific processing required */
509*a9fa9459Szrj #define SHF_GROUP	(1 << 9)	/* Member of a section group */
510*a9fa9459Szrj #define SHF_TLS		(1 << 10)	/* Thread local storage section */
511*a9fa9459Szrj #define SHF_COMPRESSED	(1 << 11)	/* Section with compressed data */
512*a9fa9459Szrj 
513*a9fa9459Szrj /* #define SHF_MASKOS	0x0F000000    *//* OS-specific semantics */
514*a9fa9459Szrj #define SHF_MASKOS	0x0FF00000	/* New value, Oct 4, 1999 Draft */
515*a9fa9459Szrj #define SHF_MASKPROC	0xF0000000	/* Processor-specific semantics */
516*a9fa9459Szrj 
517*a9fa9459Szrj /* This used to be implemented as a processor specific section flag.
518*a9fa9459Szrj    We just make it generic.  */
519*a9fa9459Szrj #define SHF_EXCLUDE	0x80000000	/* Link editor is to exclude
520*a9fa9459Szrj 					   this section from executable
521*a9fa9459Szrj 					   and shared library that it
522*a9fa9459Szrj 					   builds when those objects
523*a9fa9459Szrj 					   are not to be further
524*a9fa9459Szrj 					   relocated.  */
525*a9fa9459Szrj 
526*a9fa9459Szrj /* Compression types */
527*a9fa9459Szrj #define ELFCOMPRESS_ZLIB   1		/* Compressed with zlib.  */
528*a9fa9459Szrj #define ELFCOMPRESS_LOOS   0x60000000	/* OS-specific semantics, lo */
529*a9fa9459Szrj #define ELFCOMPRESS_HIOS   0x6FFFFFFF	/* OS-specific semantics, hi */
530*a9fa9459Szrj #define ELFCOMPRESS_LOPROC 0x70000000	/* Processor-specific semantics, lo */
531*a9fa9459Szrj #define ELFCOMPRESS_HIPROC 0x7FFFFFFF	/* Processor-specific semantics, hi */
532*a9fa9459Szrj 
533*a9fa9459Szrj /* Values of note segment descriptor types for core files.  */
534*a9fa9459Szrj 
535*a9fa9459Szrj #define NT_PRSTATUS	1		/* Contains copy of prstatus struct */
536*a9fa9459Szrj #define NT_FPREGSET	2		/* Contains copy of fpregset struct */
537*a9fa9459Szrj #define NT_PRPSINFO	3		/* Contains copy of prpsinfo struct */
538*a9fa9459Szrj #define NT_TASKSTRUCT	4		/* Contains copy of task struct */
539*a9fa9459Szrj #define NT_AUXV		6		/* Contains copy of Elfxx_auxv_t */
540*a9fa9459Szrj #define NT_PRXFPREG	0x46e62b7f	/* Contains a user_xfpregs_struct; */
541*a9fa9459Szrj 					/*   note name must be "LINUX".  */
542*a9fa9459Szrj #define NT_PPC_VMX	0x100		/* PowerPC Altivec/VMX registers */
543*a9fa9459Szrj 					/*   note name must be "LINUX".  */
544*a9fa9459Szrj #define NT_PPC_VSX	0x102		/* PowerPC VSX registers */
545*a9fa9459Szrj 					/*   note name must be "LINUX".  */
546*a9fa9459Szrj #define NT_386_TLS	0x200		/* x86 TLS information */
547*a9fa9459Szrj 					/*   note name must be "LINUX".  */
548*a9fa9459Szrj #define NT_386_IOPERM	0x201		/* x86 io permissions */
549*a9fa9459Szrj 					/*   note name must be "LINUX".  */
550*a9fa9459Szrj #define NT_X86_XSTATE	0x202		/* x86 XSAVE extended state */
551*a9fa9459Szrj 					/*   note name must be "LINUX".  */
552*a9fa9459Szrj #define NT_S390_HIGH_GPRS 0x300		/* S/390 upper halves of GPRs  */
553*a9fa9459Szrj 					/*   note name must be "LINUX".  */
554*a9fa9459Szrj #define NT_S390_TIMER	0x301		/* S390 timer */
555*a9fa9459Szrj 					/*   note name must be "LINUX".  */
556*a9fa9459Szrj #define NT_S390_TODCMP	0x302		/* S390 TOD clock comparator */
557*a9fa9459Szrj 					/*   note name must be "LINUX".  */
558*a9fa9459Szrj #define NT_S390_TODPREG	0x303		/* S390 TOD programmable register */
559*a9fa9459Szrj 					/*   note name must be "LINUX".  */
560*a9fa9459Szrj #define NT_S390_CTRS	0x304		/* S390 control registers */
561*a9fa9459Szrj 					/*   note name must be "LINUX".  */
562*a9fa9459Szrj #define NT_S390_PREFIX	0x305		/* S390 prefix register */
563*a9fa9459Szrj 					/*   note name must be "LINUX".  */
564*a9fa9459Szrj #define NT_S390_LAST_BREAK      0x306   /* S390 breaking event address */
565*a9fa9459Szrj 					/*   note name must be "LINUX".  */
566*a9fa9459Szrj #define NT_S390_SYSTEM_CALL     0x307   /* S390 system call restart data */
567*a9fa9459Szrj 					/*   note name must be "LINUX".  */
568*a9fa9459Szrj #define NT_S390_TDB	0x308		/* S390 transaction diagnostic block */
569*a9fa9459Szrj 					/*   note name must be "LINUX".  */
570*a9fa9459Szrj #define NT_S390_VXRS_LOW	0x309	/* S390 vector registers 0-15 upper half */
571*a9fa9459Szrj 					/*   note name must be "LINUX".  */
572*a9fa9459Szrj #define NT_S390_VXRS_HIGH	0x30a	/* S390 vector registers 16-31 */
573*a9fa9459Szrj 					/*   note name must be "LINUX".  */
574*a9fa9459Szrj #define NT_ARM_VFP	0x400		/* ARM VFP registers */
575*a9fa9459Szrj /* The following definitions should really use NT_AARCH_..., but defined
576*a9fa9459Szrj    this way for compatibility with Linux.  */
577*a9fa9459Szrj #define NT_ARM_TLS	0x401		/* AArch TLS registers */
578*a9fa9459Szrj 					/*   note name must be "LINUX".  */
579*a9fa9459Szrj #define NT_ARM_HW_BREAK	0x402		/* AArch hardware breakpoint registers */
580*a9fa9459Szrj 					/*   note name must be "LINUX".  */
581*a9fa9459Szrj #define NT_ARM_HW_WATCH	0x403		/* AArch hardware watchpoint registers */
582*a9fa9459Szrj 					/*   note name must be "LINUX".  */
583*a9fa9459Szrj #define NT_SIGINFO	0x53494749	/* Fields of siginfo_t.  */
584*a9fa9459Szrj #define NT_FILE		0x46494c45	/* Description of mapped files.  */
585*a9fa9459Szrj 
586*a9fa9459Szrj /* Note segments for core files on dir-style procfs systems.  */
587*a9fa9459Szrj 
588*a9fa9459Szrj #define NT_PSTATUS	10		/* Has a struct pstatus */
589*a9fa9459Szrj #define NT_FPREGS	12		/* Has a struct fpregset */
590*a9fa9459Szrj #define NT_PSINFO	13		/* Has a struct psinfo */
591*a9fa9459Szrj #define NT_LWPSTATUS	16		/* Has a struct lwpstatus_t */
592*a9fa9459Szrj #define NT_LWPSINFO	17		/* Has a struct lwpsinfo_t */
593*a9fa9459Szrj #define NT_WIN32PSTATUS	18		/* Has a struct win32_pstatus */
594*a9fa9459Szrj 
595*a9fa9459Szrj /* Note segment for SystemTap probes.  */
596*a9fa9459Szrj #define NT_STAPSDT	3
597*a9fa9459Szrj 
598*a9fa9459Szrj /* Note segments for core files on FreeBSD systems.  Note name is
599*a9fa9459Szrj    "FreeBSD".  */
600*a9fa9459Szrj 
601*a9fa9459Szrj #define	NT_FREEBSD_THRMISC	7	/* Thread miscellaneous info. */
602*a9fa9459Szrj #define	NT_FREEBSD_PROCSTAT_PROC	8	/* Procstat proc data. */
603*a9fa9459Szrj #define	NT_FREEBSD_PROCSTAT_FILES	9	/* Procstat files data. */
604*a9fa9459Szrj #define	NT_FREEBSD_PROCSTAT_VMMAP	10	/* Procstat vmmap data. */
605*a9fa9459Szrj #define	NT_FREEBSD_PROCSTAT_GROUPS	11	/* Procstat groups data. */
606*a9fa9459Szrj #define	NT_FREEBSD_PROCSTAT_UMASK	12	/* Procstat umask data. */
607*a9fa9459Szrj #define	NT_FREEBSD_PROCSTAT_RLIMIT	13	/* Procstat rlimit data. */
608*a9fa9459Szrj #define	NT_FREEBSD_PROCSTAT_OSREL	14	/* Procstat osreldate data. */
609*a9fa9459Szrj #define	NT_FREEBSD_PROCSTAT_PSSTRINGS	15	/* Procstat ps_strings data. */
610*a9fa9459Szrj #define	NT_FREEBSD_PROCSTAT_AUXV	16	/* Procstat auxv data. */
611*a9fa9459Szrj 
612*a9fa9459Szrj /* Note segments for core files on NetBSD systems.  Note name
613*a9fa9459Szrj    must start with "NetBSD-CORE".  */
614*a9fa9459Szrj 
615*a9fa9459Szrj #define NT_NETBSDCORE_PROCINFO	1	/* Has a struct procinfo */
616*a9fa9459Szrj #define NT_NETBSDCORE_FIRSTMACH	32	/* start of machdep note types */
617*a9fa9459Szrj 
618*a9fa9459Szrj 
619*a9fa9459Szrj /* Note segments for core files on OpenBSD systems.  Note name is
620*a9fa9459Szrj    "OpenBSD".  */
621*a9fa9459Szrj 
622*a9fa9459Szrj #define NT_OPENBSD_PROCINFO	10
623*a9fa9459Szrj #define NT_OPENBSD_AUXV		11
624*a9fa9459Szrj #define NT_OPENBSD_REGS		20
625*a9fa9459Szrj #define NT_OPENBSD_FPREGS	21
626*a9fa9459Szrj #define NT_OPENBSD_XFPREGS	22
627*a9fa9459Szrj #define NT_OPENBSD_WCOOKIE	23
628*a9fa9459Szrj 
629*a9fa9459Szrj 
630*a9fa9459Szrj /* Note segments for core files on SPU systems.  Note name
631*a9fa9459Szrj    must start with "SPU/".  */
632*a9fa9459Szrj 
633*a9fa9459Szrj #define NT_SPU		1
634*a9fa9459Szrj 
635*a9fa9459Szrj /* Values of note segment descriptor types for object files.  */
636*a9fa9459Szrj 
637*a9fa9459Szrj #define NT_VERSION	1		/* Contains a version string.  */
638*a9fa9459Szrj #define NT_ARCH		2		/* Contains an architecture string.  */
639*a9fa9459Szrj 
640*a9fa9459Szrj /* Values for notes in non-core files using name "GNU".  */
641*a9fa9459Szrj 
642*a9fa9459Szrj #define NT_GNU_ABI_TAG		1
643*a9fa9459Szrj #define NT_GNU_HWCAP		2	/* Used by ld.so and kernel vDSO.  */
644*a9fa9459Szrj #define NT_GNU_BUILD_ID		3	/* Generated by ld --build-id.  */
645*a9fa9459Szrj #define NT_GNU_GOLD_VERSION	4	/* Generated by gold.  */
646*a9fa9459Szrj 
647*a9fa9459Szrj /* Values used in GNU .note.ABI-tag notes (NT_GNU_ABI_TAG).  */
648*a9fa9459Szrj #define GNU_ABI_TAG_LINUX	0
649*a9fa9459Szrj #define GNU_ABI_TAG_HURD	1
650*a9fa9459Szrj #define GNU_ABI_TAG_SOLARIS	2
651*a9fa9459Szrj #define GNU_ABI_TAG_FREEBSD	3
652*a9fa9459Szrj #define GNU_ABI_TAG_NETBSD	4
653*a9fa9459Szrj #define GNU_ABI_TAG_SYLLABLE	5
654*a9fa9459Szrj #define GNU_ABI_TAG_NACL	6
655*a9fa9459Szrj 
656*a9fa9459Szrj /* Values for NetBSD .note.netbsd.ident notes.  Note name is "NetBSD".  */
657*a9fa9459Szrj 
658*a9fa9459Szrj #define NT_NETBSD_IDENT		1
659*a9fa9459Szrj #define NT_NETBSD_MARCH		5
660*a9fa9459Szrj 
661*a9fa9459Szrj /* Values for OpenBSD .note.openbsd.ident notes.  Note name is "OpenBSD".  */
662*a9fa9459Szrj 
663*a9fa9459Szrj #define NT_OPENBSD_IDENT	1
664*a9fa9459Szrj 
665*a9fa9459Szrj /* Values for FreeBSD .note.ABI-tag notes.  Note name is "FreeBSD".  */
666*a9fa9459Szrj 
667*a9fa9459Szrj #define NT_FREEBSD_ABI_TAG	1
668*a9fa9459Szrj 
669*a9fa9459Szrj /* These three macros disassemble and assemble a symbol table st_info field,
670*a9fa9459Szrj    which contains the symbol binding and symbol type.  The STB_ and STT_
671*a9fa9459Szrj    defines identify the binding and type.  */
672*a9fa9459Szrj 
673*a9fa9459Szrj #define ELF_ST_BIND(val)		(((unsigned int)(val)) >> 4)
674*a9fa9459Szrj #define ELF_ST_TYPE(val)		((val) & 0xF)
675*a9fa9459Szrj #define ELF_ST_INFO(bind,type)		(((bind) << 4) + ((type) & 0xF))
676*a9fa9459Szrj 
677*a9fa9459Szrj /* The 64bit and 32bit versions of these macros are identical, but
678*a9fa9459Szrj    the ELF spec defines them, so here they are.  */
679*a9fa9459Szrj #define ELF32_ST_BIND  ELF_ST_BIND
680*a9fa9459Szrj #define ELF32_ST_TYPE  ELF_ST_TYPE
681*a9fa9459Szrj #define ELF32_ST_INFO  ELF_ST_INFO
682*a9fa9459Szrj #define ELF64_ST_BIND  ELF_ST_BIND
683*a9fa9459Szrj #define ELF64_ST_TYPE  ELF_ST_TYPE
684*a9fa9459Szrj #define ELF64_ST_INFO  ELF_ST_INFO
685*a9fa9459Szrj 
686*a9fa9459Szrj /* This macro disassembles and assembles a symbol's visibility into
687*a9fa9459Szrj    the st_other field.  The STV_ defines specify the actual visibility.  */
688*a9fa9459Szrj 
689*a9fa9459Szrj #define ELF_ST_VISIBILITY(v)		((v) & 0x3)
690*a9fa9459Szrj /* The remaining bits in the st_other field are not currently used.
691*a9fa9459Szrj    They should be set to zero.  */
692*a9fa9459Szrj 
693*a9fa9459Szrj #define ELF32_ST_VISIBILITY  ELF_ST_VISIBILITY
694*a9fa9459Szrj #define ELF64_ST_VISIBILITY  ELF_ST_VISIBILITY
695*a9fa9459Szrj 
696*a9fa9459Szrj 
697*a9fa9459Szrj #define STN_UNDEF	0		/* Undefined symbol index */
698*a9fa9459Szrj 
699*a9fa9459Szrj #define STB_LOCAL	0		/* Symbol not visible outside obj */
700*a9fa9459Szrj #define STB_GLOBAL	1		/* Symbol visible outside obj */
701*a9fa9459Szrj #define STB_WEAK	2		/* Like globals, lower precedence */
702*a9fa9459Szrj #define STB_LOOS	10		/* OS-specific semantics */
703*a9fa9459Szrj #define STB_GNU_UNIQUE	10		/* Symbol is unique in namespace */
704*a9fa9459Szrj #define STB_HIOS	12		/* OS-specific semantics */
705*a9fa9459Szrj #define STB_LOPROC	13		/* Processor-specific semantics */
706*a9fa9459Szrj #define STB_HIPROC	15		/* Processor-specific semantics */
707*a9fa9459Szrj 
708*a9fa9459Szrj #define STT_NOTYPE	0		/* Symbol type is unspecified */
709*a9fa9459Szrj #define STT_OBJECT	1		/* Symbol is a data object */
710*a9fa9459Szrj #define STT_FUNC	2		/* Symbol is a code object */
711*a9fa9459Szrj #define STT_SECTION	3		/* Symbol associated with a section */
712*a9fa9459Szrj #define STT_FILE	4		/* Symbol gives a file name */
713*a9fa9459Szrj #define STT_COMMON	5		/* An uninitialised common block */
714*a9fa9459Szrj #define STT_TLS		6		/* Thread local data object */
715*a9fa9459Szrj #define STT_RELC	8		/* Complex relocation expression */
716*a9fa9459Szrj #define STT_SRELC	9		/* Signed Complex relocation expression */
717*a9fa9459Szrj #define STT_LOOS	10		/* OS-specific semantics */
718*a9fa9459Szrj #define STT_GNU_IFUNC	10		/* Symbol is an indirect code object */
719*a9fa9459Szrj #define STT_HIOS	12		/* OS-specific semantics */
720*a9fa9459Szrj #define STT_LOPROC	13		/* Processor-specific semantics */
721*a9fa9459Szrj #define STT_HIPROC	15		/* Processor-specific semantics */
722*a9fa9459Szrj 
723*a9fa9459Szrj /* The following constants control how a symbol may be accessed once it has
724*a9fa9459Szrj    become part of an executable or shared library.  */
725*a9fa9459Szrj 
726*a9fa9459Szrj #define STV_DEFAULT	0		/* Visibility is specified by binding type */
727*a9fa9459Szrj #define STV_INTERNAL	1		/* OS specific version of STV_HIDDEN */
728*a9fa9459Szrj #define STV_HIDDEN	2		/* Can only be seen inside currect component */
729*a9fa9459Szrj #define STV_PROTECTED	3		/* Treat as STB_LOCAL inside current component */
730*a9fa9459Szrj 
731*a9fa9459Szrj /* Relocation info handling macros.  */
732*a9fa9459Szrj 
733*a9fa9459Szrj #define ELF32_R_SYM(i)		((i) >> 8)
734*a9fa9459Szrj #define ELF32_R_TYPE(i)		((i) & 0xff)
735*a9fa9459Szrj #define ELF32_R_INFO(s,t)	(((s) << 8) + ((t) & 0xff))
736*a9fa9459Szrj 
737*a9fa9459Szrj #define ELF64_R_SYM(i)		((i) >> 32)
738*a9fa9459Szrj #define ELF64_R_TYPE(i)		((i) & 0xffffffff)
739*a9fa9459Szrj #define ELF64_R_INFO(s,t)	(((bfd_vma) (s) << 31 << 1) + (bfd_vma) (t))
740*a9fa9459Szrj 
741*a9fa9459Szrj /* Dynamic section tags.  */
742*a9fa9459Szrj 
743*a9fa9459Szrj #define DT_NULL		0
744*a9fa9459Szrj #define DT_NEEDED	1
745*a9fa9459Szrj #define DT_PLTRELSZ	2
746*a9fa9459Szrj #define DT_PLTGOT	3
747*a9fa9459Szrj #define DT_HASH		4
748*a9fa9459Szrj #define DT_STRTAB	5
749*a9fa9459Szrj #define DT_SYMTAB	6
750*a9fa9459Szrj #define DT_RELA		7
751*a9fa9459Szrj #define DT_RELASZ	8
752*a9fa9459Szrj #define DT_RELAENT	9
753*a9fa9459Szrj #define DT_STRSZ	10
754*a9fa9459Szrj #define DT_SYMENT	11
755*a9fa9459Szrj #define DT_INIT		12
756*a9fa9459Szrj #define DT_FINI		13
757*a9fa9459Szrj #define DT_SONAME	14
758*a9fa9459Szrj #define DT_RPATH	15
759*a9fa9459Szrj #define DT_SYMBOLIC	16
760*a9fa9459Szrj #define DT_REL		17
761*a9fa9459Szrj #define DT_RELSZ	18
762*a9fa9459Szrj #define DT_RELENT	19
763*a9fa9459Szrj #define DT_PLTREL	20
764*a9fa9459Szrj #define DT_DEBUG	21
765*a9fa9459Szrj #define DT_TEXTREL	22
766*a9fa9459Szrj #define DT_JMPREL	23
767*a9fa9459Szrj #define DT_BIND_NOW	24
768*a9fa9459Szrj #define DT_INIT_ARRAY	25
769*a9fa9459Szrj #define DT_FINI_ARRAY	26
770*a9fa9459Szrj #define DT_INIT_ARRAYSZ 27
771*a9fa9459Szrj #define DT_FINI_ARRAYSZ 28
772*a9fa9459Szrj #define DT_RUNPATH	29
773*a9fa9459Szrj #define DT_FLAGS	30
774*a9fa9459Szrj #define DT_ENCODING	32
775*a9fa9459Szrj #define DT_PREINIT_ARRAY   32
776*a9fa9459Szrj #define DT_PREINIT_ARRAYSZ 33
777*a9fa9459Szrj 
778*a9fa9459Szrj /* Note, the Oct 4, 1999 draft of the ELF ABI changed the values
779*a9fa9459Szrj    for DT_LOOS and DT_HIOS.  Some implementations however, use
780*a9fa9459Szrj    values outside of the new range (see below).	 */
781*a9fa9459Szrj #define OLD_DT_LOOS	0x60000000
782*a9fa9459Szrj #define DT_LOOS		0x6000000d
783*a9fa9459Szrj #define DT_HIOS		0x6ffff000
784*a9fa9459Szrj #define OLD_DT_HIOS	0x6fffffff
785*a9fa9459Szrj 
786*a9fa9459Szrj #define DT_LOPROC	0x70000000
787*a9fa9459Szrj #define DT_HIPROC	0x7fffffff
788*a9fa9459Szrj 
789*a9fa9459Szrj /* The next 2 dynamic tag ranges, integer value range (DT_VALRNGLO to
790*a9fa9459Szrj    DT_VALRNGHI) and virtual address range (DT_ADDRRNGLO to DT_ADDRRNGHI),
791*a9fa9459Szrj    are used on Solaris.  We support them everywhere.  Note these values
792*a9fa9459Szrj    lie outside of the (new) range for OS specific values.  This is a
793*a9fa9459Szrj    deliberate special case and we maintain it for backwards compatability.
794*a9fa9459Szrj  */
795*a9fa9459Szrj #define DT_VALRNGLO	0x6ffffd00
796*a9fa9459Szrj #define DT_GNU_PRELINKED 0x6ffffdf5
797*a9fa9459Szrj #define DT_GNU_CONFLICTSZ 0x6ffffdf6
798*a9fa9459Szrj #define DT_GNU_LIBLISTSZ 0x6ffffdf7
799*a9fa9459Szrj #define DT_CHECKSUM	0x6ffffdf8
800*a9fa9459Szrj #define DT_PLTPADSZ	0x6ffffdf9
801*a9fa9459Szrj #define DT_MOVEENT	0x6ffffdfa
802*a9fa9459Szrj #define DT_MOVESZ	0x6ffffdfb
803*a9fa9459Szrj #define DT_FEATURE	0x6ffffdfc
804*a9fa9459Szrj #define DT_POSFLAG_1	0x6ffffdfd
805*a9fa9459Szrj #define DT_SYMINSZ	0x6ffffdfe
806*a9fa9459Szrj #define DT_SYMINENT	0x6ffffdff
807*a9fa9459Szrj #define DT_VALRNGHI	0x6ffffdff
808*a9fa9459Szrj 
809*a9fa9459Szrj #define DT_ADDRRNGLO	0x6ffffe00
810*a9fa9459Szrj #define DT_GNU_HASH	0x6ffffef5
811*a9fa9459Szrj #define DT_TLSDESC_PLT	0x6ffffef6
812*a9fa9459Szrj #define DT_TLSDESC_GOT	0x6ffffef7
813*a9fa9459Szrj #define DT_GNU_CONFLICT	0x6ffffef8
814*a9fa9459Szrj #define DT_GNU_LIBLIST	0x6ffffef9
815*a9fa9459Szrj #define DT_CONFIG	0x6ffffefa
816*a9fa9459Szrj #define DT_DEPAUDIT	0x6ffffefb
817*a9fa9459Szrj #define DT_AUDIT	0x6ffffefc
818*a9fa9459Szrj #define DT_PLTPAD	0x6ffffefd
819*a9fa9459Szrj #define DT_MOVETAB	0x6ffffefe
820*a9fa9459Szrj #define DT_SYMINFO	0x6ffffeff
821*a9fa9459Szrj #define DT_ADDRRNGHI	0x6ffffeff
822*a9fa9459Szrj 
823*a9fa9459Szrj #define DT_RELACOUNT	0x6ffffff9
824*a9fa9459Szrj #define DT_RELCOUNT	0x6ffffffa
825*a9fa9459Szrj #define DT_FLAGS_1	0x6ffffffb
826*a9fa9459Szrj #define DT_VERDEF	0x6ffffffc
827*a9fa9459Szrj #define DT_VERDEFNUM	0x6ffffffd
828*a9fa9459Szrj #define DT_VERNEED	0x6ffffffe
829*a9fa9459Szrj #define DT_VERNEEDNUM	0x6fffffff
830*a9fa9459Szrj 
831*a9fa9459Szrj /* This tag is a GNU extension to the Solaris version scheme.  */
832*a9fa9459Szrj #define DT_VERSYM	0x6ffffff0
833*a9fa9459Szrj 
834*a9fa9459Szrj #define DT_LOPROC	0x70000000
835*a9fa9459Szrj #define DT_HIPROC	0x7fffffff
836*a9fa9459Szrj 
837*a9fa9459Szrj /* These section tags are used on Solaris.  We support them
838*a9fa9459Szrj    everywhere, and hope they do not conflict.  */
839*a9fa9459Szrj 
840*a9fa9459Szrj #define DT_AUXILIARY	0x7ffffffd
841*a9fa9459Szrj #define DT_USED		0x7ffffffe
842*a9fa9459Szrj #define DT_FILTER	0x7fffffff
843*a9fa9459Szrj 
844*a9fa9459Szrj 
845*a9fa9459Szrj /* Values used in DT_FEATURE .dynamic entry.  */
846*a9fa9459Szrj #define DTF_1_PARINIT	0x00000001
847*a9fa9459Szrj /* From
848*a9fa9459Szrj 
849*a9fa9459Szrj    http://docs.sun.com:80/ab2/coll.45.13/LLM/@Ab2PageView/21165?Ab2Lang=C&Ab2Enc=iso-8859-1
850*a9fa9459Szrj 
851*a9fa9459Szrj    DTF_1_CONFEXP is the same as DTF_1_PARINIT. It is a typo. The value
852*a9fa9459Szrj    defined here is the same as the one in <sys/link.h> on Solaris 8.  */
853*a9fa9459Szrj #define DTF_1_CONFEXP	0x00000002
854*a9fa9459Szrj 
855*a9fa9459Szrj /* Flag values used in the DT_POSFLAG_1 .dynamic entry.	 */
856*a9fa9459Szrj #define DF_P1_LAZYLOAD	0x00000001
857*a9fa9459Szrj #define DF_P1_GROUPPERM	0x00000002
858*a9fa9459Szrj 
859*a9fa9459Szrj /* Flag value in in the DT_FLAGS_1 .dynamic entry.  */
860*a9fa9459Szrj #define DF_1_NOW	0x00000001
861*a9fa9459Szrj #define DF_1_GLOBAL	0x00000002
862*a9fa9459Szrj #define DF_1_GROUP	0x00000004
863*a9fa9459Szrj #define DF_1_NODELETE	0x00000008
864*a9fa9459Szrj #define DF_1_LOADFLTR	0x00000010
865*a9fa9459Szrj #define DF_1_INITFIRST	0x00000020
866*a9fa9459Szrj #define DF_1_NOOPEN	0x00000040
867*a9fa9459Szrj #define DF_1_ORIGIN	0x00000080
868*a9fa9459Szrj #define DF_1_DIRECT	0x00000100
869*a9fa9459Szrj #define DF_1_TRANS	0x00000200
870*a9fa9459Szrj #define DF_1_INTERPOSE	0x00000400
871*a9fa9459Szrj #define DF_1_NODEFLIB	0x00000800
872*a9fa9459Szrj #define DF_1_NODUMP	0x00001000
873*a9fa9459Szrj #define DF_1_CONFALT	0x00002000
874*a9fa9459Szrj #define DF_1_ENDFILTEE	0x00004000
875*a9fa9459Szrj #define	DF_1_DISPRELDNE	0x00008000
876*a9fa9459Szrj #define	DF_1_DISPRELPND	0x00010000
877*a9fa9459Szrj #define	DF_1_NODIRECT	0x00020000
878*a9fa9459Szrj #define	DF_1_IGNMULDEF	0x00040000
879*a9fa9459Szrj #define	DF_1_NOKSYMS	0x00080000
880*a9fa9459Szrj #define	DF_1_NOHDR	0x00100000
881*a9fa9459Szrj #define	DF_1_EDITED	0x00200000
882*a9fa9459Szrj #define	DF_1_NORELOC	0x00400000
883*a9fa9459Szrj #define	DF_1_SYMINTPOSE	0x00800000
884*a9fa9459Szrj #define	DF_1_GLOBAUDIT	0x01000000
885*a9fa9459Szrj #define	DF_1_SINGLETON	0x02000000
886*a9fa9459Szrj #define	DF_1_STUB	0x04000000
887*a9fa9459Szrj #define	DF_1_PIE	0x08000000
888*a9fa9459Szrj 
889*a9fa9459Szrj /* Flag values for the DT_FLAGS entry.	*/
890*a9fa9459Szrj #define DF_ORIGIN	(1 << 0)
891*a9fa9459Szrj #define DF_SYMBOLIC	(1 << 1)
892*a9fa9459Szrj #define DF_TEXTREL	(1 << 2)
893*a9fa9459Szrj #define DF_BIND_NOW	(1 << 3)
894*a9fa9459Szrj #define DF_STATIC_TLS	(1 << 4)
895*a9fa9459Szrj 
896*a9fa9459Szrj /* These constants are used for the version number of a Elf32_Verdef
897*a9fa9459Szrj    structure.  */
898*a9fa9459Szrj 
899*a9fa9459Szrj #define VER_DEF_NONE		0
900*a9fa9459Szrj #define VER_DEF_CURRENT		1
901*a9fa9459Szrj 
902*a9fa9459Szrj /* These constants appear in the vd_flags field of a Elf32_Verdef
903*a9fa9459Szrj    structure.
904*a9fa9459Szrj 
905*a9fa9459Szrj    Cf. the Solaris Linker and Libraries Guide, Ch. 7, Object File Format,
906*a9fa9459Szrj    Versioning Sections, for a description:
907*a9fa9459Szrj 
908*a9fa9459Szrj    http://docs.sun.com/app/docs/doc/819-0690/chapter6-93046?l=en&a=view  */
909*a9fa9459Szrj 
910*a9fa9459Szrj #define VER_FLG_BASE		0x1
911*a9fa9459Szrj #define VER_FLG_WEAK		0x2
912*a9fa9459Szrj #define VER_FLG_INFO		0x4
913*a9fa9459Szrj 
914*a9fa9459Szrj /* These special constants can be found in an Elf32_Versym field.  */
915*a9fa9459Szrj 
916*a9fa9459Szrj #define VER_NDX_LOCAL		0
917*a9fa9459Szrj #define VER_NDX_GLOBAL		1
918*a9fa9459Szrj 
919*a9fa9459Szrj /* These constants are used for the version number of a Elf32_Verneed
920*a9fa9459Szrj    structure.  */
921*a9fa9459Szrj 
922*a9fa9459Szrj #define VER_NEED_NONE		0
923*a9fa9459Szrj #define VER_NEED_CURRENT	1
924*a9fa9459Szrj 
925*a9fa9459Szrj /* This flag appears in a Versym structure.  It means that the symbol
926*a9fa9459Szrj    is hidden, and is only visible with an explicit version number.
927*a9fa9459Szrj    This is a GNU extension.  */
928*a9fa9459Szrj 
929*a9fa9459Szrj #define VERSYM_HIDDEN		0x8000
930*a9fa9459Szrj 
931*a9fa9459Szrj /* This is the mask for the rest of the Versym information.  */
932*a9fa9459Szrj 
933*a9fa9459Szrj #define VERSYM_VERSION		0x7fff
934*a9fa9459Szrj 
935*a9fa9459Szrj /* This is a special token which appears as part of a symbol name.  It
936*a9fa9459Szrj    indictes that the rest of the name is actually the name of a
937*a9fa9459Szrj    version node, and is not part of the actual name.  This is a GNU
938*a9fa9459Szrj    extension.  For example, the symbol name `stat@ver2' is taken to
939*a9fa9459Szrj    mean the symbol `stat' in version `ver2'.  */
940*a9fa9459Szrj 
941*a9fa9459Szrj #define ELF_VER_CHR	'@'
942*a9fa9459Szrj 
943*a9fa9459Szrj /* Possible values for si_boundto.  */
944*a9fa9459Szrj 
945*a9fa9459Szrj #define SYMINFO_BT_SELF		0xffff	/* Symbol bound to self */
946*a9fa9459Szrj #define SYMINFO_BT_PARENT	0xfffe	/* Symbol bound to parent */
947*a9fa9459Szrj #define SYMINFO_BT_LOWRESERVE	0xff00	/* Beginning of reserved entries */
948*a9fa9459Szrj 
949*a9fa9459Szrj /* Possible bitmasks for si_flags.  */
950*a9fa9459Szrj 
951*a9fa9459Szrj #define SYMINFO_FLG_DIRECT	0x0001	/* Direct bound symbol */
952*a9fa9459Szrj #define SYMINFO_FLG_PASSTHRU	0x0002	/* Pass-thru symbol for translator */
953*a9fa9459Szrj #define SYMINFO_FLG_COPY	0x0004	/* Symbol is a copy-reloc */
954*a9fa9459Szrj #define SYMINFO_FLG_LAZYLOAD	0x0008	/* Symbol bound to object to be lazy loaded */
955*a9fa9459Szrj 
956*a9fa9459Szrj /* Syminfo version values.  */
957*a9fa9459Szrj 
958*a9fa9459Szrj #define SYMINFO_NONE		0
959*a9fa9459Szrj #define SYMINFO_CURRENT		1
960*a9fa9459Szrj #define SYMINFO_NUM		2
961*a9fa9459Szrj 
962*a9fa9459Szrj /* Section Group Flags.	 */
963*a9fa9459Szrj 
964*a9fa9459Szrj #define GRP_COMDAT		0x1	/* A COMDAT group */
965*a9fa9459Szrj 
966*a9fa9459Szrj /* Auxv a_type values.  */
967*a9fa9459Szrj 
968*a9fa9459Szrj #define AT_NULL		0		/* End of vector */
969*a9fa9459Szrj #define AT_IGNORE	1		/* Entry should be ignored */
970*a9fa9459Szrj #define AT_EXECFD	2		/* File descriptor of program */
971*a9fa9459Szrj #define AT_PHDR		3		/* Program headers for program */
972*a9fa9459Szrj #define AT_PHENT	4		/* Size of program header entry */
973*a9fa9459Szrj #define AT_PHNUM	5		/* Number of program headers */
974*a9fa9459Szrj #define AT_PAGESZ	6		/* System page size */
975*a9fa9459Szrj #define AT_BASE		7		/* Base address of interpreter */
976*a9fa9459Szrj #define AT_FLAGS	8		/* Flags */
977*a9fa9459Szrj #define AT_ENTRY	9		/* Entry point of program */
978*a9fa9459Szrj #define AT_NOTELF	10		/* Program is not ELF */
979*a9fa9459Szrj #define AT_UID		11		/* Real uid */
980*a9fa9459Szrj #define AT_EUID		12		/* Effective uid */
981*a9fa9459Szrj #define AT_GID		13		/* Real gid */
982*a9fa9459Szrj #define AT_EGID		14		/* Effective gid */
983*a9fa9459Szrj #define AT_CLKTCK	17		/* Frequency of times() */
984*a9fa9459Szrj #define AT_PLATFORM	15		/* String identifying platform.  */
985*a9fa9459Szrj #define AT_HWCAP	16		/* Machine dependent hints about
986*a9fa9459Szrj 					   processor capabilities.  */
987*a9fa9459Szrj #define AT_FPUCW	18		/* Used FPU control word.  */
988*a9fa9459Szrj #define AT_DCACHEBSIZE	19		/* Data cache block size.  */
989*a9fa9459Szrj #define AT_ICACHEBSIZE	20		/* Instruction cache block size.  */
990*a9fa9459Szrj #define AT_UCACHEBSIZE	21		/* Unified cache block size.  */
991*a9fa9459Szrj #define AT_IGNOREPPC	22		/* Entry should be ignored */
992*a9fa9459Szrj #define	AT_SECURE	23		/* Boolean, was exec setuid-like?  */
993*a9fa9459Szrj #define AT_BASE_PLATFORM 24		/* String identifying real platform,
994*a9fa9459Szrj 					   may differ from AT_PLATFORM.  */
995*a9fa9459Szrj #define AT_RANDOM	25		/* Address of 16 random bytes.  */
996*a9fa9459Szrj #define AT_HWCAP2	26		/* Extension of AT_HWCAP.  */
997*a9fa9459Szrj #define AT_EXECFN	31		/* Filename of executable.  */
998*a9fa9459Szrj /* Pointer to the global system page used for system calls and other
999*a9fa9459Szrj    nice things.  */
1000*a9fa9459Szrj #define AT_SYSINFO	32
1001*a9fa9459Szrj #define AT_SYSINFO_EHDR	33 /* Pointer to ELF header of system-supplied DSO.  */
1002*a9fa9459Szrj 
1003*a9fa9459Szrj /* More complete cache descriptions than AT_[DIU]CACHEBSIZE.  If the
1004*a9fa9459Szrj    value is -1, then the cache doesn't exist.  Otherwise:
1005*a9fa9459Szrj 
1006*a9fa9459Szrj    bit 0-3:  Cache set-associativity; 0 means fully associative.
1007*a9fa9459Szrj    bit 4-7:  Log2 of cacheline size.
1008*a9fa9459Szrj    bit 8-31:  Size of the entire cache >> 8.  */
1009*a9fa9459Szrj 
1010*a9fa9459Szrj #define AT_L1I_CACHESHAPE 34
1011*a9fa9459Szrj #define AT_L1D_CACHESHAPE 35
1012*a9fa9459Szrj #define AT_L2_CACHESHAPE  36
1013*a9fa9459Szrj #define AT_L3_CACHESHAPE  37
1014*a9fa9459Szrj 
1015*a9fa9459Szrj #define AT_FREEBSD_EXECPATH     15      /* Path to the executable. */
1016*a9fa9459Szrj #define AT_FREEBSD_CANARY       16      /* Canary for SSP. */
1017*a9fa9459Szrj #define AT_FREEBSD_CANARYLEN    17      /* Length of the canary. */
1018*a9fa9459Szrj #define AT_FREEBSD_OSRELDATE    18      /* OSRELDATE. */
1019*a9fa9459Szrj #define AT_FREEBSD_NCPUS        19      /* Number of CPUs. */
1020*a9fa9459Szrj #define AT_FREEBSD_PAGESIZES    20      /* Pagesizes. */
1021*a9fa9459Szrj #define AT_FREEBSD_PAGESIZESLEN 21      /* Number of pagesizes. */
1022*a9fa9459Szrj #define AT_FREEBSD_TIMEKEEP     22      /* Pointer to timehands. */
1023*a9fa9459Szrj #define AT_FREEBSD_STACKPROT    23      /* Initial stack protection. */
1024*a9fa9459Szrj 
1025*a9fa9459Szrj #define AT_SUN_UID      2000    /* Effective user ID.  */
1026*a9fa9459Szrj #define AT_SUN_RUID     2001    /* Real user ID.  */
1027*a9fa9459Szrj #define AT_SUN_GID      2002    /* Effective group ID.  */
1028*a9fa9459Szrj #define AT_SUN_RGID     2003    /* Real group ID.  */
1029*a9fa9459Szrj #define AT_SUN_LDELF    2004    /* Dynamic linker's ELF header.  */
1030*a9fa9459Szrj #define AT_SUN_LDSHDR   2005    /* Dynamic linker's section headers.  */
1031*a9fa9459Szrj #define AT_SUN_LDNAME   2006    /* String giving name of dynamic linker.  */
1032*a9fa9459Szrj #define AT_SUN_LPAGESZ  2007    /* Large pagesize.   */
1033*a9fa9459Szrj #define AT_SUN_PLATFORM 2008    /* Platform name string.  */
1034*a9fa9459Szrj #undef AT_SUN_HWCAP
1035*a9fa9459Szrj #define AT_SUN_HWCAP    2009	/* Machine dependent hints about
1036*a9fa9459Szrj 				   processor capabilities.  */
1037*a9fa9459Szrj #define AT_SUN_IFLUSH   2010    /* Should flush icache? */
1038*a9fa9459Szrj #define AT_SUN_CPU      2011    /* CPU name string.  */
1039*a9fa9459Szrj #define AT_SUN_EMUL_ENTRY 2012	/* COFF entry point address.  */
1040*a9fa9459Szrj #define AT_SUN_EMUL_EXECFD 2013	/* COFF executable file descriptor.  */
1041*a9fa9459Szrj #define AT_SUN_EXECNAME 2014    /* Canonicalized file name given to execve.  */
1042*a9fa9459Szrj #define AT_SUN_MMU      2015    /* String for name of MMU module.   */
1043*a9fa9459Szrj #define AT_SUN_LDDATA   2016    /* Dynamic linker's data segment address.  */
1044*a9fa9459Szrj #define AT_SUN_AUXFLAGS	2017	/* AF_SUN_ flags passed from the kernel.  */
1045*a9fa9459Szrj 
1046*a9fa9459Szrj 
1047*a9fa9459Szrj #endif /* _ELF_COMMON_H */
1048