drivers/linuxgpiod: add support for opendrain trst
[openocd.git] / testing / build.test1 / mingw32_help / include / sys / elf_common.h
1 /*-
2 * Copyright (c) 1998 John D. Polstra.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $FreeBSD: src/sys/sys/elf_common.h,v 1.15 2004/05/05 02:38:54 marcel Exp $
27 */
28
29 #ifndef _SYS_ELF_COMMON_H_
30 #define _SYS_ELF_COMMON_H_ 1
31
32 /*
33 * ELF definitions that are independent of architecture or word size.
34 */
35
36 /*
37 * Note header. The ".note" section contains an array of notes. Each
38 * begins with this header, aligned to a word boundary. Immediately
39 * following the note header is n_namesz bytes of name, padded to the
40 * next word boundary. Then comes n_descsz bytes of descriptor, again
41 * padded to a word boundary. The values of n_namesz and n_descsz do
42 * not include the padding.
43 */
44
45 typedef struct {
46 u_int32_t n_namesz; /* Length of name. */
47 u_int32_t n_descsz; /* Length of descriptor. */
48 u_int32_t n_type; /* Type of this note. */
49 } Elf_Note;
50
51 /* Indexes into the e_ident array. Keep synced with
52 http://www.sco.com/developer/gabi/ch4.eheader.html */
53 #define EI_MAG0 0 /* Magic number, byte 0. */
54 #define EI_MAG1 1 /* Magic number, byte 1. */
55 #define EI_MAG2 2 /* Magic number, byte 2. */
56 #define EI_MAG3 3 /* Magic number, byte 3. */
57 #define EI_CLASS 4 /* Class of machine. */
58 #define EI_DATA 5 /* Data format. */
59 #define EI_VERSION 6 /* ELF format version. */
60 #define EI_OSABI 7 /* Operating system / ABI identification */
61 #define EI_ABIVERSION 8 /* ABI version */
62 #define OLD_EI_BRAND 8 /* Start of architecture identification. */
63 #define EI_PAD 9 /* Start of padding (per SVR4 ABI). */
64 #define EI_NIDENT 16 /* Size of e_ident array. */
65
66 /* Values for the magic number bytes. */
67 #define ELFMAG0 0x7f
68 #define ELFMAG1 'E'
69 #define ELFMAG2 'L'
70 #define ELFMAG3 'F'
71 #define ELFMAG "\177ELF" /* magic string */
72 #define SELFMAG 4 /* magic string size */
73
74 /* Values for e_ident[EI_VERSION] and e_version. */
75 #define EV_NONE 0
76 #define EV_CURRENT 1
77
78 /* Values for e_ident[EI_CLASS]. */
79 #define ELFCLASSNONE 0 /* Unknown class. */
80 #define ELFCLASS32 1 /* 32-bit architecture. */
81 #define ELFCLASS64 2 /* 64-bit architecture. */
82
83 /* Values for e_ident[EI_DATA]. */
84 #define ELFDATANONE 0 /* Unknown data format. */
85 #define ELFDATA2LSB 1 /* 2's complement little-endian. */
86 #define ELFDATA2MSB 2 /* 2's complement big-endian. */
87
88 /* Values for e_ident[EI_OSABI]. */
89 #define ELFOSABI_SYSV 0 /* UNIX System V ABI */
90 #define ELFOSABI_NONE ELFOSABI_SYSV /* symbol used in old spec */
91 #define ELFOSABI_HPUX 1 /* HP-UX operating system */
92 #define ELFOSABI_NETBSD 2 /* NetBSD */
93 #define ELFOSABI_LINUX 3 /* GNU/Linux */
94 #define ELFOSABI_HURD 4 /* GNU/Hurd */
95 #define ELFOSABI_86OPEN 5 /* 86Open common IA32 ABI */
96 #define ELFOSABI_SOLARIS 6 /* Solaris */
97 #define ELFOSABI_MONTEREY 7 /* Monterey */
98 #define ELFOSABI_IRIX 8 /* IRIX */
99 #define ELFOSABI_FREEBSD 9 /* FreeBSD */
100 #define ELFOSABI_TRU64 10 /* TRU64 UNIX */
101 #define ELFOSABI_MODESTO 11 /* Novell Modesto */
102 #define ELFOSABI_OPENBSD 12 /* OpenBSD */
103 #define ELFOSABI_ARM 97 /* ARM */
104 #define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */
105
106 /* e_ident */
107 #define IS_ELF(ehdr) ((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \
108 (ehdr).e_ident[EI_MAG1] == ELFMAG1 && \
109 (ehdr).e_ident[EI_MAG2] == ELFMAG2 && \
110 (ehdr).e_ident[EI_MAG3] == ELFMAG3)
111
112 /* Values for e_type. */
113 #define ET_NONE 0 /* Unknown type. */
114 #define ET_REL 1 /* Relocatable. */
115 #define ET_EXEC 2 /* Executable. */
116 #define ET_DYN 3 /* Shared object. */
117 #define ET_CORE 4 /* Core file. */
118
119 /* Values for e_machine. */
120 #define EM_NONE 0 /* Unknown machine. */
121 #define EM_M32 1 /* AT&T WE32100. */
122 #define EM_SPARC 2 /* Sun SPARC. */
123 #define EM_386 3 /* Intel i386. */
124 #define EM_68K 4 /* Motorola 68000. */
125 #define EM_88K 5 /* Motorola 88000. */
126 #define EM_486 6 /* Intel i486. */
127 #define EM_860 7 /* Intel i860. */
128 #define EM_MIPS 8 /* MIPS R3000 Big-Endian only */
129
130 /* Extensions. This list is not complete. */
131 #define EM_S370 9 /* IBM System/370 */
132 #define EM_MIPS_RS4_BE 10 /* MIPS R4000 Big-Endian */ /* Depreciated */
133 #define EM_PARISC 15 /* HPPA */
134 #define EM_SPARC32PLUS 18 /* SPARC v8plus */
135 #define EM_PPC 20 /* PowerPC 32-bit */
136 #define EM_PPC64 21 /* PowerPC 64-bit */
137 #define EM_ARM 40 /* ARM */
138 #define EM_SPARCV9 43 /* SPARC v9 64-bit */
139 #define EM_IA_64 50 /* Intel IA-64 Processor */
140 #define EM_X86_64 62 /* Advanced Micro Devices x86-64 */
141 #define EM_ALPHA 0x9026 /* Alpha (written in the absence of an ABI */
142
143 /* Special section indexes. */
144 #define SHN_UNDEF 0 /* Undefined, missing, irrelevant. */
145 #define SHN_LORESERVE 0xff00 /* First of reserved range. */
146 #define SHN_LOPROC 0xff00 /* First processor-specific. */
147 #define SHN_HIPROC 0xff1f /* Last processor-specific. */
148 #define SHN_ABS 0xfff1 /* Absolute values. */
149 #define SHN_COMMON 0xfff2 /* Common data. */
150 #define SHN_HIRESERVE 0xffff /* Last of reserved range. */
151
152 /* sh_type */
153 #define SHT_NULL 0 /* inactive */
154 #define SHT_PROGBITS 1 /* program defined information */
155 #define SHT_SYMTAB 2 /* symbol table section */
156 #define SHT_STRTAB 3 /* string table section */
157 #define SHT_RELA 4 /* relocation section with addends */
158 #define SHT_HASH 5 /* symbol hash table section */
159 #define SHT_DYNAMIC 6 /* dynamic section */
160 #define SHT_NOTE 7 /* note section */
161 #define SHT_NOBITS 8 /* no space section */
162 #define SHT_REL 9 /* relocation section - no addends */
163 #define SHT_SHLIB 10 /* reserved - purpose unknown */
164 #define SHT_DYNSYM 11 /* dynamic symbol table section */
165 #define SHT_NUM 12 /* number of section types */
166 #define SHT_LOOS 0x60000000 /* First of OS specific semantics */
167 #define SHT_HIOS 0x6fffffff /* Last of OS specific semantics */
168 #define SHT_LOPROC 0x70000000 /* reserved range for processor */
169 #define SHT_HIPROC 0x7fffffff /* specific section header types */
170 #define SHT_LOUSER 0x80000000 /* reserved range for application */
171 #define SHT_HIUSER 0xffffffff /* specific indexes */
172
173 /* Flags for sh_flags. */
174 #define SHF_WRITE 0x1 /* Section contains writable data. */
175 #define SHF_ALLOC 0x2 /* Section occupies memory. */
176 #define SHF_EXECINSTR 0x4 /* Section contains instructions. */
177 #define SHF_TLS 0x400 /* Section contains TLS data. */
178 #define SHF_MASKPROC 0xf0000000 /* Reserved for processor-specific. */
179
180 /* Values for p_type. */
181 #define PT_NULL 0 /* Unused entry. */
182 #define PT_LOAD 1 /* Loadable segment. */
183 #define PT_DYNAMIC 2 /* Dynamic linking information segment. */
184 #define PT_INTERP 3 /* Pathname of interpreter. */
185 #define PT_NOTE 4 /* Auxiliary information. */
186 #define PT_SHLIB 5 /* Reserved (not used). */
187 #define PT_PHDR 6 /* Location of program header itself. */
188 #define PT_TLS 7 /* Thread local storage segment */
189
190 #define PT_COUNT 8 /* Number of defined p_type values. */
191
192 #define PT_LOOS 0x60000000 /* OS-specific */
193 #define PT_HIOS 0x6fffffff /* OS-specific */
194 #define PT_LOPROC 0x70000000 /* First processor-specific type. */
195 #define PT_HIPROC 0x7fffffff /* Last processor-specific type. */
196
197 /* Values for p_flags. */
198 #define PF_X 0x1 /* Executable. */
199 #define PF_W 0x2 /* Writable. */
200 #define PF_R 0x4 /* Readable. */
201
202 /* Values for d_tag. */
203 #define DT_NULL 0 /* Terminating entry. */
204 #define DT_NEEDED 1 /* String table offset of a needed shared
205 library. */
206 #define DT_PLTRELSZ 2 /* Total size in bytes of PLT relocations. */
207 #define DT_PLTGOT 3 /* Processor-dependent address. */
208 #define DT_HASH 4 /* Address of symbol hash table. */
209 #define DT_STRTAB 5 /* Address of string table. */
210 #define DT_SYMTAB 6 /* Address of symbol table. */
211 #define DT_RELA 7 /* Address of ElfNN_Rela relocations. */
212 #define DT_RELASZ 8 /* Total size of ElfNN_Rela relocations. */
213 #define DT_RELAENT 9 /* Size of each ElfNN_Rela relocation entry. */
214 #define DT_STRSZ 10 /* Size of string table. */
215 #define DT_SYMENT 11 /* Size of each symbol table entry. */
216 #define DT_INIT 12 /* Address of initialization function. */
217 #define DT_FINI 13 /* Address of finalization function. */
218 #define DT_SONAME 14 /* String table offset of shared object
219 name. */
220 #define DT_RPATH 15 /* String table offset of library path. [sup] */
221 #define DT_SYMBOLIC 16 /* Indicates "symbolic" linking. [sup] */
222 #define DT_REL 17 /* Address of ElfNN_Rel relocations. */
223 #define DT_RELSZ 18 /* Total size of ElfNN_Rel relocations. */
224 #define DT_RELENT 19 /* Size of each ElfNN_Rel relocation. */
225 #define DT_PLTREL 20 /* Type of relocation used for PLT. */
226 #define DT_DEBUG 21 /* Reserved (not used). */
227 #define DT_TEXTREL 22 /* Indicates there may be relocations in
228 non-writable segments. [sup] */
229 #define DT_JMPREL 23 /* Address of PLT relocations. */
230 #define DT_BIND_NOW 24 /* [sup] */
231 #define DT_INIT_ARRAY 25 /* Address of the array of pointers to
232 initialization functions */
233 #define DT_FINI_ARRAY 26 /* Address of the array of pointers to
234 termination functions */
235 #define DT_INIT_ARRAYSZ 27 /* Size in bytes of the array of
236 initialization functions. */
237 #define DT_FINI_ARRAYSZ 28 /* Size in bytes of the array of
238 terminationfunctions. */
239 #define DT_RUNPATH 29 /* String table offset of a null-terminated
240 library search path string. */
241 #define DT_FLAGS 30 /* Object specific flag values. */
242 #define DT_ENCODING 32 /* Values greater than or equal to DT_ENCODING
243 and less than DT_LOOS follow the rules for
244 the interpretation of the d_un union
245 as follows: even == 'd_ptr', even == 'd_val'
246 or none */
247 #define DT_PREINIT_ARRAY 32 /* Address of the array of pointers to
248 pre-initialization functions. */
249 #define DT_PREINIT_ARRAYSZ 33 /* Size in bytes of the array of
250 pre-initialization functions. */
251
252 #define DT_COUNT 33 /* Number of defined d_tag values. */
253
254 #define DT_LOOS 0x6000000d /* First OS-specific */
255 #define DT_HIOS 0x6fff0000 /* Last OS-specific */
256 #define DT_LOPROC 0x70000000 /* First processor-specific type. */
257 #define DT_HIPROC 0x7fffffff /* Last processor-specific type. */
258
259 /* Values for DT_FLAGS */
260 #define DF_ORIGIN 0x0001 /* Indicates that the object being loaded may
261 make reference to the $ORIGIN substitution
262 string */
263 #define DF_SYMBOLIC 0x0002 /* Indicates "symbolic" linking. */
264 #define DF_TEXTREL 0x0004 /* Indicates there may be relocations in
265 non-writable segments. */
266 #define DF_BIND_NOW 0x0008 /* Indicates that the dynamic linker should
267 process all relocations for the object
268 containing this entry before transferring
269 control to the program. */
270 #define DF_STATIC_TLS 0x0010 /* Indicates that the shared object or
271 executable contains code using a static
272 thread-local storage scheme. */
273
274 /* Values for n_type. Used in core files. */
275 #define NT_PRSTATUS 1 /* Process status. */
276 #define NT_FPREGSET 2 /* Floating point registers. */
277 #define NT_PRPSINFO 3 /* Process state info. */
278
279 /* Symbol Binding - ELFNN_ST_BIND - st_info */
280 #define STB_LOCAL 0 /* Local symbol */
281 #define STB_GLOBAL 1 /* Global symbol */
282 #define STB_WEAK 2 /* like global - lower precedence */
283 #define STB_LOPROC 13 /* reserved range for processor */
284 #define STB_HIPROC 15 /* specific symbol bindings */
285
286 /* Symbol type - ELFNN_ST_TYPE - st_info */
287 #define STT_NOTYPE 0 /* Unspecified type. */
288 #define STT_OBJECT 1 /* Data object. */
289 #define STT_FUNC 2 /* Function. */
290 #define STT_SECTION 3 /* Section. */
291 #define STT_FILE 4 /* Source file. */
292 #define STT_TLS 6 /* TLS object. */
293 #define STT_LOPROC 13 /* reserved range for processor */
294 #define STT_HIPROC 15 /* specific symbol types */
295
296 /* Special symbol table indexes. */
297 #define STN_UNDEF 0 /* Undefined symbol index. */
298
299 #endif /* !_SYS_ELF_COMMON_H_ */

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)