elfconstants.m4 revision 1.1
1# Copyright (c) 2010,2021 Joseph Koshy
2# All rights reserved.
3
4# Redistribution and use in source and binary forms, with or without
5# modification, are permitted provided that the following conditions
6# are met:
7# 1. Redistributions of source code must retain the above copyright
8#    notice, this list of conditions and the following disclaimer.
9# 2. Redistributions in binary form must reproduce the above copyright
10#    notice, this list of conditions and the following disclaimer in the
11#    documentation and/or other materials provided with the distribution.
12
13# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23# SUCH DAMAGE.
24
25# These definitions are based on:
26# - The public specification of the ELF format as defined in the
27#   October 2009 draft of System V ABI.
28#   See: http://www.sco.com/developers/gabi/latest/ch4.intro.html
29# - The May 1998 (version 1.5) draft of "The ELF-64 object format".
30# - Processor-specific ELF ABI definitions for sparc, i386, amd64, mips,
31#   ia64, powerpc, and RISC-V processors.
32# - The "Linkers and Libraries Guide", from Sun Microsystems.
33
34define(`VCSID_ELFCONSTANTS_M4',
35	`Id: elfconstants.m4 3939 2021-04-04 20:15:13Z jkoshy')
36
37#
38# Types of capabilities.
39# 
40define(`DEFINE_CAPABILITIES',`
41DEFINE_CAPABILITY(`CA_SUNW_NULL',	0,	`ignored')
42DEFINE_CAPABILITY(`CA_SUNW_HW_1',	1,	`hardware capability')
43DEFINE_CAPABILITY(`CA_SUNW_SW_1',	2,	`software capability')')
44
45#
46# Flags used with dynamic linking entries.
47#
48define(`DEFINE_DYN_FLAGS',`
49DEFINE_DYN_FLAG(`DF_ORIGIN',           0x1,
50	`object being loaded may refer to `$ORIGIN'')
51DEFINE_DYN_FLAG(`DF_SYMBOLIC',         0x2,
52	`search library for references before executable')
53DEFINE_DYN_FLAG(`DF_TEXTREL',          0x4,
54	`relocation entries may modify text segment')
55DEFINE_DYN_FLAG(`DF_BIND_NOW',         0x8,
56	`process relocation entries at load time')
57DEFINE_DYN_FLAG(`DF_STATIC_TLS',       0x10,
58	`uses static thread-local storage')
59DEFINE_DYN_FLAG(`DF_1_BIND_NOW',       0x1,
60	`process relocation entries at load time')
61DEFINE_DYN_FLAG(`DF_1_GLOBAL',         0x2,
62	`unused')
63DEFINE_DYN_FLAG(`DF_1_GROUP',          0x4,
64	`object is a member of a group')
65DEFINE_DYN_FLAG(`DF_1_NODELETE',       0x8,
66	`object cannot be deleted from a process')
67DEFINE_DYN_FLAG(`DF_1_LOADFLTR',       0x10,
68	`immediate load filtees')
69DEFINE_DYN_FLAG(`DF_1_INITFIRST',      0x20,
70	`initialize object first')
71DEFINE_DYN_FLAG(`DF_1_NOOPEN',         0x40,
72	`disallow dlopen()')
73DEFINE_DYN_FLAG(`DF_1_ORIGIN',         0x80,
74	`object being loaded may refer to $ORIGIN')
75DEFINE_DYN_FLAG(`DF_1_DIRECT',         0x100,
76	`direct bindings enabled')
77DEFINE_DYN_FLAG(`DF_1_INTERPOSE',      0x400,
78	`object is interposer')
79DEFINE_DYN_FLAG(`DF_1_NODEFLIB',       0x800,
80	`ignore default library search path')
81DEFINE_DYN_FLAG(`DF_1_NODUMP',         0x1000,
82	`disallow dldump()')
83DEFINE_DYN_FLAG(`DF_1_CONFALT',        0x2000,
84	`object is a configuration alternative')
85DEFINE_DYN_FLAG(`DF_1_ENDFILTEE',      0x4000,
86	`filtee terminates filter search')
87DEFINE_DYN_FLAG(`DF_1_DISPRELDNE',     0x8000,
88	`displacement relocation done')
89DEFINE_DYN_FLAG(`DF_1_DISPRELPND',     0x10000,
90	`displacement relocation pending')')
91
92#
93# Dynamic linking entry types.
94#
95define(`DEFINE_DYN_TYPES',`
96DEFINE_DYN_TYPE(`DT_NULL',             0,
97	`end of array')
98DEFINE_DYN_TYPE(`DT_NEEDED',           1,
99	`names a needed library')
100DEFINE_DYN_TYPE(`DT_PLTRELSZ',         2,
101	`size in bytes of associated relocation entries')
102DEFINE_DYN_TYPE(`DT_PLTGOT',           3,
103	`address associated with the procedure linkage table')
104DEFINE_DYN_TYPE(`DT_HASH',             4,
105	`address of the symbol hash table')
106DEFINE_DYN_TYPE(`DT_STRTAB',           5,
107	`address of the string table')
108DEFINE_DYN_TYPE(`DT_SYMTAB',           6,
109	`address of the symbol table')
110DEFINE_DYN_TYPE(`DT_RELA',             7,
111	`address of the relocation table')
112DEFINE_DYN_TYPE(`DT_RELASZ',           8,
113	`size of the DT_RELA table')
114DEFINE_DYN_TYPE(`DT_RELAENT',          9,
115	`size of each DT_RELA entry')
116DEFINE_DYN_TYPE(`DT_STRSZ',            10,
117	`size of the string table')
118DEFINE_DYN_TYPE(`DT_SYMENT',           11,
119	`size of a symbol table entry')
120DEFINE_DYN_TYPE(`DT_INIT',             12,
121	`address of the initialization function')
122DEFINE_DYN_TYPE(`DT_FINI',             13,
123	`address of the finalization function')
124DEFINE_DYN_TYPE(`DT_SONAME',           14,
125	`names the shared object')
126DEFINE_DYN_TYPE(`DT_RPATH',            15,
127	`runtime library search path')
128DEFINE_DYN_TYPE(`DT_SYMBOLIC',         16,
129	`alter symbol resolution algorithm')
130DEFINE_DYN_TYPE(`DT_REL',              17,
131	`address of the DT_REL table')
132DEFINE_DYN_TYPE(`DT_RELSZ',            18,
133	`size of the DT_REL table')
134DEFINE_DYN_TYPE(`DT_RELENT',           19,
135	`size of each DT_REL entry')
136DEFINE_DYN_TYPE(`DT_PLTREL',           20,
137	`type of relocation entry in the procedure linkage table')
138DEFINE_DYN_TYPE(`DT_DEBUG',            21,
139	`used for debugging')
140DEFINE_DYN_TYPE(`DT_TEXTREL',          22,
141	`text segment may be written to during relocation')
142DEFINE_DYN_TYPE(`DT_JMPREL',           23,
143	`address of relocation entries associated with the procedure linkage table')
144DEFINE_DYN_TYPE(`DT_BIND_NOW',         24,
145	`bind symbols at loading time')
146DEFINE_DYN_TYPE(`DT_INIT_ARRAY',       25,
147	`pointers to initialization functions')
148DEFINE_DYN_TYPE(`DT_FINI_ARRAY',       26,
149	`pointers to termination functions')
150DEFINE_DYN_TYPE(`DT_INIT_ARRAYSZ',     27,
151	`size of the DT_INIT_ARRAY')
152DEFINE_DYN_TYPE(`DT_FINI_ARRAYSZ',     28,
153	`size of the DT_FINI_ARRAY')
154DEFINE_DYN_TYPE(`DT_RUNPATH',          29,
155	`index of library search path string')
156DEFINE_DYN_TYPE(`DT_FLAGS',            30,
157	`flags specific to the object being loaded')
158DEFINE_DYN_TYPE(`DT_ENCODING',         32,
159	`standard semantics')
160DEFINE_DYN_TYPE(`DT_PREINIT_ARRAY',    32,
161	`pointers to pre-initialization functions')
162DEFINE_DYN_TYPE(`DT_PREINIT_ARRAYSZ',  33,
163	`size of pre-initialization array')
164DEFINE_DYN_TYPE(`DT_MAXPOSTAGS',       34,
165	`the number of positive tags')
166DEFINE_DYN_TYPE(`DT_LOOS',             0x6000000DUL,
167	`start of OS-specific types')
168DEFINE_DYN_TYPE(`DT_SUNW_AUXILIARY',   0x6000000DUL,
169	`offset of string naming auxiliary filtees')
170DEFINE_DYN_TYPE(`DT_SUNW_RTLDINF',     0x6000000EUL,
171	`rtld internal use')
172DEFINE_DYN_TYPE(`DT_SUNW_FILTER',      0x6000000FUL,
173	`offset of string naming standard filtees')
174DEFINE_DYN_TYPE(`DT_SUNW_CAP',         0x60000010UL,
175	`address of hardware capabilities section')
176DEFINE_DYN_TYPE(`DT_SUNW_ASLR',        0x60000023UL,
177	`Address Space Layout Randomization flag')
178DEFINE_DYN_TYPE(`DT_HIOS',             0x6FFFF000UL,
179	`end of OS-specific types')
180DEFINE_DYN_TYPE(`DT_VALRNGLO',         0x6FFFFD00UL,
181	`start of range using the d_val field')
182DEFINE_DYN_TYPE(`DT_GNU_PRELINKED',    0x6FFFFDF5UL,
183	`prelinking timestamp')
184DEFINE_DYN_TYPE(`DT_GNU_CONFLICTSZ',   0x6FFFFDF6UL,
185	`size of conflict section')
186DEFINE_DYN_TYPE(`DT_GNU_LIBLISTSZ',    0x6FFFFDF7UL,
187	`size of library list')
188DEFINE_DYN_TYPE(`DT_CHECKSUM',         0x6FFFFDF8UL,
189	`checksum for the object')
190DEFINE_DYN_TYPE(`DT_PLTPADSZ',         0x6FFFFDF9UL,
191	`size of PLT padding')
192DEFINE_DYN_TYPE(`DT_MOVEENT',          0x6FFFFDFAUL,
193	`size of DT_MOVETAB entries')
194DEFINE_DYN_TYPE(`DT_MOVESZ',           0x6FFFFDFBUL,
195	`total size of the MOVETAB table')
196DEFINE_DYN_TYPE(`DT_FEATURE',          0x6FFFFDFCUL,
197	`feature values')
198DEFINE_DYN_TYPE(`DT_POSFLAG_1',        0x6FFFFDFDUL,
199	`dynamic position flags')
200DEFINE_DYN_TYPE(`DT_SYMINSZ',          0x6FFFFDFEUL,
201	`size of the DT_SYMINFO table')
202DEFINE_DYN_TYPE(`DT_SYMINENT',         0x6FFFFDFFUL,
203	`size of a DT_SYMINFO entry')
204DEFINE_DYN_TYPE(`DT_VALRNGHI',         0x6FFFFDFFUL,
205	`end of range using the d_val field')
206DEFINE_DYN_TYPE(`DT_ADDRRNGLO',        0x6FFFFE00UL,
207	`start of range using the d_ptr field')
208DEFINE_DYN_TYPE(`DT_GNU_HASH',	       0x6FFFFEF5UL,
209	`GNU style hash tables')
210DEFINE_DYN_TYPE(`DT_TLSDESC_PLT',      0x6FFFFEF6UL,
211	`location of PLT entry for TLS descriptor resolver calls')
212DEFINE_DYN_TYPE(`DT_TLSDESC_GOT',      0x6FFFFEF7UL,
213	`location of GOT entry used by TLS descriptor resolver PLT entry')
214DEFINE_DYN_TYPE(`DT_GNU_CONFLICT',     0x6FFFFEF8UL,
215	`address of conflict section')
216DEFINE_DYN_TYPE(`DT_GNU_LIBLIST',      0x6FFFFEF9UL,
217	`address of conflict section')
218DEFINE_DYN_TYPE(`DT_CONFIG',           0x6FFFFEFAUL,
219	`configuration file')
220DEFINE_DYN_TYPE(`DT_DEPAUDIT',         0x6FFFFEFBUL,
221	`string defining audit libraries')
222DEFINE_DYN_TYPE(`DT_AUDIT',            0x6FFFFEFCUL,
223	`string defining audit libraries')
224DEFINE_DYN_TYPE(`DT_PLTPAD',           0x6FFFFEFDUL,
225	`PLT padding')
226DEFINE_DYN_TYPE(`DT_MOVETAB',          0x6FFFFEFEUL,
227	`address of a move table')
228DEFINE_DYN_TYPE(`DT_SYMINFO',          0x6FFFFEFFUL,
229	`address of the symbol information table')
230DEFINE_DYN_TYPE(`DT_ADDRRNGHI',        0x6FFFFEFFUL,
231	`end of range using the d_ptr field')
232DEFINE_DYN_TYPE(`DT_VERSYM',	       0x6FFFFFF0UL,
233	`address of the version section')
234DEFINE_DYN_TYPE(`DT_RELACOUNT',        0x6FFFFFF9UL,
235	`count of RELA relocations')
236DEFINE_DYN_TYPE(`DT_RELCOUNT',         0x6FFFFFFAUL,
237	`count of REL relocations')
238DEFINE_DYN_TYPE(`DT_FLAGS_1',          0x6FFFFFFBUL,
239	`flag values')
240DEFINE_DYN_TYPE(`DT_VERDEF',	       0x6FFFFFFCUL,
241	`address of the version definition segment')
242DEFINE_DYN_TYPE(`DT_VERDEFNUM',	       0x6FFFFFFDUL,
243	`the number of version definition entries')
244DEFINE_DYN_TYPE(`DT_VERNEED',	       0x6FFFFFFEUL,
245	`address of section with needed versions')
246DEFINE_DYN_TYPE(`DT_VERNEEDNUM',       0x6FFFFFFFUL,
247	`the number of version needed entries')
248DEFINE_DYN_TYPE(`DT_LOPROC',           0x70000000UL,
249	`start of processor-specific types')
250DEFINE_DYN_TYPE(`DT_ARM_SYMTABSZ',     0x70000001UL,
251	`number of entries in the dynamic symbol table')
252DEFINE_DYN_TYPE(`DT_SPARC_REGISTER',   0x70000001UL,
253	`index of an STT_SPARC_REGISTER symbol')
254DEFINE_DYN_TYPE(`DT_ARM_PREEMPTMAP',   0x70000002UL,
255	`address of the preemption map')
256DEFINE_DYN_TYPE(`DT_MIPS_RLD_VERSION', 0x70000001UL,
257	`version ID for runtime linker interface')
258DEFINE_DYN_TYPE(`DT_MIPS_TIME_STAMP',  0x70000002UL,
259	`timestamp')
260DEFINE_DYN_TYPE(`DT_MIPS_ICHECKSUM',   0x70000003UL,
261	`checksum of all external strings and common sizes')
262DEFINE_DYN_TYPE(`DT_MIPS_IVERSION',    0x70000004UL,
263	`string table index of a version string')
264DEFINE_DYN_TYPE(`DT_MIPS_FLAGS',       0x70000005UL,
265	`MIPS-specific flags')
266DEFINE_DYN_TYPE(`DT_MIPS_BASE_ADDRESS', 0x70000006UL,
267	`base address for the executable/DSO')
268DEFINE_DYN_TYPE(`DT_MIPS_CONFLICT',    0x70000008UL,
269	`address of .conflict section')
270DEFINE_DYN_TYPE(`DT_MIPS_LIBLIST',     0x70000009UL,
271	`address of .liblist section')
272DEFINE_DYN_TYPE(`DT_MIPS_LOCAL_GOTNO', 0x7000000AUL,
273	`number of local GOT entries')
274DEFINE_DYN_TYPE(`DT_MIPS_CONFLICTNO',  0x7000000BUL,
275	`number of entries in the .conflict section')
276DEFINE_DYN_TYPE(`DT_MIPS_LIBLISTNO',   0x70000010UL,
277	`number of entries in the .liblist section')
278DEFINE_DYN_TYPE(`DT_MIPS_SYMTABNO',    0x70000011UL,
279	`number of entries in the .dynsym section')
280DEFINE_DYN_TYPE(`DT_MIPS_UNREFEXTNO',  0x70000012UL,
281	`index of first external dynamic symbol not referenced locally')
282DEFINE_DYN_TYPE(`DT_MIPS_GOTSYM',      0x70000013UL,
283	`index of first dynamic symbol corresponds to a GOT entry')
284DEFINE_DYN_TYPE(`DT_MIPS_HIPAGENO',    0x70000014UL,
285	`number of page table entries in GOT')
286DEFINE_DYN_TYPE(`DT_MIPS_RLD_MAP',     0x70000016UL,
287	`address of runtime linker map')
288DEFINE_DYN_TYPE(`DT_MIPS_DELTA_CLASS', 0x70000017UL,
289	`Delta C++ class definition')
290DEFINE_DYN_TYPE(`DT_MIPS_DELTA_CLASS_NO', 0x70000018UL,
291	`number of entries in DT_MIPS_DELTA_CLASS')
292DEFINE_DYN_TYPE(`DT_MIPS_DELTA_INSTANCE', 0x70000019UL,
293	`Delta C++ class instances')
294DEFINE_DYN_TYPE(`DT_MIPS_DELTA_INSTANCE_NO', 0x7000001AUL,
295	`number of entries in DT_MIPS_DELTA_INSTANCE')
296DEFINE_DYN_TYPE(`DT_MIPS_DELTA_RELOC', 0x7000001BUL,
297	`Delta relocations')
298DEFINE_DYN_TYPE(`DT_MIPS_DELTA_RELOC_NO', 0x7000001CUL,
299	`number of entries in DT_MIPS_DELTA_RELOC')
300DEFINE_DYN_TYPE(`DT_MIPS_DELTA_SYM',   0x7000001DUL,
301	`Delta symbols referred by Delta relocations')
302DEFINE_DYN_TYPE(`DT_MIPS_DELTA_SYM_NO', 0x7000001EUL,
303	`number of entries in DT_MIPS_DELTA_SYM')
304DEFINE_DYN_TYPE(`DT_MIPS_DELTA_CLASSSYM', 0x70000020UL,
305	`Delta symbols for class declarations')
306DEFINE_DYN_TYPE(`DT_MIPS_DELTA_CLASSSYM_NO', 0x70000021UL,
307	`number of entries in DT_MIPS_DELTA_CLASSSYM')
308DEFINE_DYN_TYPE(`DT_MIPS_CXX_FLAGS',   0x70000022UL,
309	`C++ flavor flags')
310DEFINE_DYN_TYPE(`DT_MIPS_PIXIE_INIT',  0x70000023UL,
311	`address of an initialization routine created by pixie')
312DEFINE_DYN_TYPE(`DT_MIPS_SYMBOL_LIB',  0x70000024UL,
313	`address of .MIPS.symlib section')
314DEFINE_DYN_TYPE(`DT_MIPS_LOCALPAGE_GOTIDX', 0x70000025UL,
315	`GOT index of first page table entry for a segment')
316DEFINE_DYN_TYPE(`DT_MIPS_LOCAL_GOTIDX', 0x70000026UL,
317	`GOT index of first page table entry for a local symbol')
318DEFINE_DYN_TYPE(`DT_MIPS_HIDDEN_GOTIDX', 0x70000027UL,
319	`GOT index of first page table entry for a hidden symbol')
320DEFINE_DYN_TYPE(`DT_MIPS_PROTECTED_GOTIDX', 0x70000028UL,
321	`GOT index of first page table entry for a protected symbol')
322DEFINE_DYN_TYPE(`DT_MIPS_OPTIONS',     0x70000029UL,
323	`address of .MIPS.options section')
324DEFINE_DYN_TYPE(`DT_MIPS_INTERFACE',   0x7000002AUL,
325	`address of .MIPS.interface section')
326DEFINE_DYN_TYPE(`DT_MIPS_DYNSTR_ALIGN', 0x7000002BUL,
327	`???')
328DEFINE_DYN_TYPE(`DT_MIPS_INTERFACE_SIZE', 0x7000002CUL,
329	`size of .MIPS.interface section')
330DEFINE_DYN_TYPE(`DT_MIPS_RLD_TEXT_RESOLVE_ADDR', 0x7000002DUL,
331	`address of _rld_text_resolve in GOT')
332DEFINE_DYN_TYPE(`DT_MIPS_PERF_SUFFIX', 0x7000002EUL,
333	`default suffix of DSO to be appended by dlopen')
334DEFINE_DYN_TYPE(`DT_MIPS_COMPACT_SIZE', 0x7000002FUL,
335	`size of a ucode compact relocation record (o32)')
336DEFINE_DYN_TYPE(`DT_MIPS_GP_VALUE',    0x70000030UL,
337	`GP value of a specified GP relative range')
338DEFINE_DYN_TYPE(`DT_MIPS_AUX_DYNAMIC', 0x70000031UL,
339	`address of an auxiliary dynamic table')
340DEFINE_DYN_TYPE(`DT_MIPS_PLTGOT',      0x70000032UL,
341	`address of the PLTGOT')
342DEFINE_DYN_TYPE(`DT_MIPS_RLD_OBJ_UPDATE', 0x70000033UL,
343	`object list update callback')
344DEFINE_DYN_TYPE(`DT_MIPS_RWPLT',       0x70000034UL,
345	`address of a writable PLT')
346DEFINE_DYN_TYPE(`DT_PPC_GOT',          0x70000000UL,
347	`value of _GLOBAL_OFFSET_TABLE_')
348DEFINE_DYN_TYPE(`DT_PPC_TLSOPT',       0x70000001UL,
349	`TLS descriptor should be optimized')
350DEFINE_DYN_TYPE(`DT_PPC64_GLINK',      0x70000000UL,
351	`address of .glink section')
352DEFINE_DYN_TYPE(`DT_PPC64_OPD',        0x70000001UL,
353	`address of .opd section')
354DEFINE_DYN_TYPE(`DT_PPC64_OPDSZ',      0x70000002UL,
355	`size of .opd section')
356DEFINE_DYN_TYPE(`DT_PPC64_TLSOPT',     0x70000003UL,
357	`TLS descriptor should be optimized')
358DEFINE_DYN_TYPE(`DT_AUXILIARY',        0x7FFFFFFDUL,
359	`offset of string naming auxiliary filtees')
360DEFINE_DYN_TYPE(`DT_USED',             0x7FFFFFFEUL,
361	`ignored')
362DEFINE_DYN_TYPE(`DT_FILTER',           0x7FFFFFFFUL,
363	`index of string naming filtees')
364DEFINE_DYN_TYPE(`DT_HIPROC',           0x7FFFFFFFUL,
365	`end of processor-specific types')
366')
367
368define(`DEFINE_DYN_TYPE_ALIASES',`
369DEFINE_DYN_TYPE_ALIAS(`DT_DEPRECATED_SPARC_REGISTER', `DT_SPARC_REGISTER')
370')
371
372#
373# Flags used in the executable header (field: e_flags).
374#
375define(`DEFINE_EHDR_FLAGS',`
376DEFINE_EHDR_FLAG(EF_ARM_RELEXEC,      0x00000001UL,
377	`dynamic segment describes only how to relocate segments')
378DEFINE_EHDR_FLAG(EF_ARM_HASENTRY,     0x00000002UL,
379	`e_entry contains a program entry point')
380DEFINE_EHDR_FLAG(EF_ARM_SYMSARESORTED, 0x00000004UL,
381	`subsection of symbol table is sorted by symbol value')
382DEFINE_EHDR_FLAG(EF_ARM_DYNSYMSUSESEGIDX, 0x00000008UL,
383	`dynamic symbol st_shndx = containing segment index + 1')
384DEFINE_EHDR_FLAG(EF_ARM_MAPSYMSFIRST, 0x00000010UL,
385	`mapping symbols precede other local symbols in symtab')
386DEFINE_EHDR_FLAG(EF_ARM_BE8,          0x00800000UL,
387	`file contains BE-8 code')
388DEFINE_EHDR_FLAG(EF_ARM_LE8,          0x00400000UL,
389	`file contains LE-8 code')
390DEFINE_EHDR_FLAG(EF_ARM_EABIMASK,     0xFF000000UL,
391	`mask for ARM EABI version number (0 denotes GNU or unknown)')
392DEFINE_EHDR_FLAG(EF_ARM_EABI_UNKNOWN, 0x00000000UL,
393	`Unknown or GNU ARM EABI version number')
394DEFINE_EHDR_FLAG(EF_ARM_EABI_VER1,    0x01000000UL,
395	`ARM EABI version 1')
396DEFINE_EHDR_FLAG(EF_ARM_EABI_VER2,    0x02000000UL,
397	`ARM EABI version 2')
398DEFINE_EHDR_FLAG(EF_ARM_EABI_VER3,    0x03000000UL,
399	`ARM EABI version 3')
400DEFINE_EHDR_FLAG(EF_ARM_EABI_VER4,    0x04000000UL,
401	`ARM EABI version 4')
402DEFINE_EHDR_FLAG(EF_ARM_EABI_VER5,    0x05000000UL,
403	`ARM EABI version 5')
404DEFINE_EHDR_FLAG(EF_ARM_INTERWORK,    0x00000004UL,
405	`GNU EABI extension')
406DEFINE_EHDR_FLAG(EF_ARM_APCS_26,      0x00000008UL,
407	`GNU EABI extension')
408DEFINE_EHDR_FLAG(EF_ARM_APCS_FLOAT,   0x00000010UL,
409	`GNU EABI extension')
410DEFINE_EHDR_FLAG(EF_ARM_PIC,          0x00000020UL,
411	`GNU EABI extension')
412DEFINE_EHDR_FLAG(EF_ARM_ALIGN8,       0x00000040UL,
413	`GNU EABI extension')
414DEFINE_EHDR_FLAG(EF_ARM_NEW_ABI,      0x00000080UL,
415	`GNU EABI extension')
416DEFINE_EHDR_FLAG(EF_ARM_OLD_ABI,      0x00000100UL,
417	`GNU EABI extension')
418DEFINE_EHDR_FLAG(EF_ARM_SOFT_FLOAT,   0x00000200UL,
419	`GNU EABI extension')
420DEFINE_EHDR_FLAG(EF_ARM_VFP_FLOAT,    0x00000400UL,
421	`GNU EABI extension')
422DEFINE_EHDR_FLAG(EF_ARM_MAVERICK_FLOAT, 0x00000800UL,
423	`GNU EABI extension')
424DEFINE_EHDR_FLAG(EF_MIPS_NOREORDER,   0x00000001UL,
425	`at least one .noreorder directive appeared in the source')
426DEFINE_EHDR_FLAG(EF_MIPS_PIC,         0x00000002UL,
427	`file contains position independent code')
428DEFINE_EHDR_FLAG(EF_MIPS_CPIC,        0x00000004UL,
429	`file code uses standard conventions for calling PIC')
430DEFINE_EHDR_FLAG(EF_MIPS_UCODE,       0x00000010UL,
431	`file contains UCODE (obsolete)')
432DEFINE_EHDR_FLAG(EF_MIPS_ABI,	      0x00007000UL,
433	`Application binary interface, see E_MIPS_* values')
434DEFINE_EHDR_FLAG(EF_MIPS_ABI2,        0x00000020UL,
435	`file follows MIPS III 32-bit ABI')
436DEFINE_EHDR_FLAG(EF_MIPS_OPTIONS_FIRST, 0x00000080UL,
437	`ld(1) should process .MIPS.options section first')
438DEFINE_EHDR_FLAG(EF_MIPS_ARCH_ASE,    0x0F000000UL,
439	`file uses application-specific architectural extensions')
440DEFINE_EHDR_FLAG(EF_MIPS_ARCH_ASE_MDMX, 0x08000000UL,
441	`file uses MDMX multimedia extensions')
442DEFINE_EHDR_FLAG(EF_MIPS_ARCH_ASE_M16, 0x04000000UL,
443	`file uses MIPS-16 ISA extensions')
444DEFINE_EHDR_FLAG(EF_MIPS_ARCH_ASE_MICROMIPS, 0x02000000UL,
445	`MicroMIPS architecture')
446DEFINE_EHDR_FLAG(EF_MIPS_ARCH,         0xF0000000UL,
447	`4-bit MIPS architecture field')
448DEFINE_EHDR_FLAG(EF_MIPS_ARCH_1,	0x00000000UL,
449	`MIPS I instruction set')
450DEFINE_EHDR_FLAG(EF_MIPS_ARCH_2,	0x10000000UL,
451	`MIPS II instruction set')
452DEFINE_EHDR_FLAG(EF_MIPS_ARCH_3,	0x20000000UL,
453	`MIPS III instruction set')
454DEFINE_EHDR_FLAG(EF_MIPS_ARCH_4,	0x30000000UL,
455	`MIPS IV instruction set')
456DEFINE_EHDR_FLAG(EF_MIPS_ARCH_5,	0x40000000UL,
457	`Never introduced')
458DEFINE_EHDR_FLAG(EF_MIPS_ARCH_32,	0x50000000UL,
459	`Mips32 Revision 1')
460DEFINE_EHDR_FLAG(EF_MIPS_ARCH_64,	0x60000000UL,
461	`Mips64 Revision 1')
462DEFINE_EHDR_FLAG(EF_MIPS_ARCH_32R2,	0x70000000UL,
463	`Mips32 Revision 2')
464DEFINE_EHDR_FLAG(EF_MIPS_ARCH_64R2,	0x80000000UL,
465	`Mips64 Revision 2')
466DEFINE_EHDR_FLAG(EF_PPC_EMB,          0x80000000UL,
467	`Embedded PowerPC flag')
468DEFINE_EHDR_FLAG(EF_PPC_RELOCATABLE,  0x00010000UL,
469	`-mrelocatable flag')
470DEFINE_EHDR_FLAG(EF_PPC_RELOCATABLE_LIB, 0x00008000UL,
471	`-mrelocatable-lib flag')
472DEFINE_EHDR_FLAG(EF_RISCV_RVC,	    0x00000001UL,
473	`Compressed instruction extension')
474DEFINE_EHDR_FLAG(EF_RISCV_FLOAT_ABI_MASK, 0x00000006UL,
475	`Floating point ABI')
476DEFINE_EHDR_FLAG(EF_RISCV_FLOAT_ABI_SOFT, 0x00000000UL,
477	`Software emulated floating point')
478DEFINE_EHDR_FLAG(EF_RISCV_FLOAT_ABI_SINGLE, 0x00000002UL,
479	`Single precision floating point')
480DEFINE_EHDR_FLAG(EF_RISCV_FLOAT_ABI_DOUBLE, 0x00000004UL,
481	`Double precision floating point')
482DEFINE_EHDR_FLAG(EF_RISCV_FLOAT_ABI_QUAD, 0x00000006UL,
483	`Quad precision floating point')
484DEFINE_EHDR_FLAG(EF_RISCV_RVE,	    0x00000008UL,
485	`Compressed instruction ABI')
486DEFINE_EHDR_FLAG(EF_RISCV_TSO,	    0x00000010UL,
487	`RVTSO memory consistency model')
488DEFINE_EHDR_FLAG(EF_SPARC_EXT_MASK,   0x00ffff00UL,
489	`Vendor Extension mask')
490DEFINE_EHDR_FLAG(EF_SPARC_32PLUS,     0x00000100UL,
491	`Generic V8+ features')
492DEFINE_EHDR_FLAG(EF_SPARC_SUN_US1,    0x00000200UL,
493	`Sun UltraSPARCTM 1 Extensions')
494DEFINE_EHDR_FLAG(EF_SPARC_HAL_R1,     0x00000400UL,
495	`HAL R1 Extensions')
496DEFINE_EHDR_FLAG(EF_SPARC_SUN_US3,    0x00000800UL,
497	`Sun UltraSPARC 3 Extensions')
498DEFINE_EHDR_FLAG(EF_SPARCV9_MM,       0x00000003UL,
499	`Mask for Memory Model')
500DEFINE_EHDR_FLAG(EF_SPARCV9_TSO,      0x00000000UL,
501	`Total Store Ordering')
502DEFINE_EHDR_FLAG(EF_SPARCV9_PSO,      0x00000001UL,
503	`Partial Store Ordering')
504DEFINE_EHDR_FLAG(EF_SPARCV9_RMO,      0x00000002UL,
505	`Relaxed Memory Ordering')
506')
507
508#
509# Offsets in the `ei_ident[]` field of an ELF executable header.
510#
511define(`DEFINE_EI_OFFSETS',`
512DEFINE_EI_OFFSET(EI_MAG0,     0,
513	`magic number')
514DEFINE_EI_OFFSET(EI_MAG1,     1,
515	`magic number')
516DEFINE_EI_OFFSET(EI_MAG2,     2,
517	`magic number')
518DEFINE_EI_OFFSET(EI_MAG3,     3,
519	`magic number')
520DEFINE_EI_OFFSET(EI_CLASS,    4,
521	`file class')
522DEFINE_EI_OFFSET(EI_DATA,     5,
523	`data encoding')
524DEFINE_EI_OFFSET(EI_VERSION,  6,
525	`file version')
526DEFINE_EI_OFFSET(EI_OSABI,    7,
527	`OS ABI kind')
528DEFINE_EI_OFFSET(EI_ABIVERSION, 8,
529	`OS ABI version')
530DEFINE_EI_OFFSET(EI_PAD,	    9,
531	`padding start')
532DEFINE_EI_OFFSET(EI_NIDENT,  16,
533	`total size')
534')
535
536#
537# The ELF class of an object.
538#
539define(`DEFINE_ELF_CLASSES',`
540DEFINE_ELF_CLASS(ELFCLASSNONE, 0,
541	`Unknown ELF class')
542DEFINE_ELF_CLASS(ELFCLASS32,   1,
543	`32 bit objects')
544DEFINE_ELF_CLASS(ELFCLASS64,   2,
545	`64 bit objects')
546')
547
548#
549# Endianness of data in an ELF object.
550#
551define(`DEFINE_ELF_DATA_ENDIANNESSES',`
552DEFINE_ELF_DATA_ENDIANNESS(ELFDATANONE, 0,
553	`Unknown data endianness')
554DEFINE_ELF_DATA_ENDIANNESS(ELFDATA2LSB, 1,
555	`little endian')
556DEFINE_ELF_DATA_ENDIANNESS(ELFDATA2MSB, 2,
557	`big endian')
558')
559
560
561#
562# Values of the magic numbers used in identification array.
563#
564changequote({,})
565define({DEFINE_ELF_MAGIC_VALUES},{
566DEFINE_ELF_MAGIC_VALUE(ELFMAG0, 0x7FU)
567DEFINE_ELF_MAGIC_VALUE(ELFMAG1, 'E')
568DEFINE_ELF_MAGIC_VALUE(ELFMAG2, 'L')
569DEFINE_ELF_MAGIC_VALUE(ELFMAG3, 'F')
570})
571changequote
572
573#
574# ELF OS ABI field.
575#
576define(`DEFINE_ELF_OSABIS',`
577DEFINE_ELF_OSABI(ELFOSABI_NONE,       0,
578	`No extensions or unspecified')
579DEFINE_ELF_OSABI(ELFOSABI_SYSV,       0,
580	`SYSV')
581DEFINE_ELF_OSABI(ELFOSABI_HPUX,       1,
582	`Hewlett-Packard HP-UX')
583DEFINE_ELF_OSABI(ELFOSABI_NETBSD,     2,
584	`NetBSD')
585DEFINE_ELF_OSABI(ELFOSABI_GNU,        3,
586	`GNU')
587DEFINE_ELF_OSABI(ELFOSABI_HURD,       4,
588	`GNU/HURD')
589DEFINE_ELF_OSABI(ELFOSABI_86OPEN,     5,
590	`86Open Common ABI')
591DEFINE_ELF_OSABI(ELFOSABI_SOLARIS,    6,
592	`Sun Solaris')
593DEFINE_ELF_OSABI(ELFOSABI_AIX,        7,
594	`AIX')
595DEFINE_ELF_OSABI(ELFOSABI_IRIX,       8,
596	`IRIX')
597DEFINE_ELF_OSABI(ELFOSABI_FREEBSD,    9,
598	`FreeBSD')
599DEFINE_ELF_OSABI(ELFOSABI_TRU64,      10,
600	`Compaq TRU64 UNIX')
601DEFINE_ELF_OSABI(ELFOSABI_MODESTO,    11,
602	`Novell Modesto')
603DEFINE_ELF_OSABI(ELFOSABI_OPENBSD,    12,
604	`Open BSD')
605DEFINE_ELF_OSABI(ELFOSABI_OPENVMS,    13,
606	`Open VMS')
607DEFINE_ELF_OSABI(ELFOSABI_NSK,        14,
608	`Hewlett-Packard Non-Stop Kernel')
609DEFINE_ELF_OSABI(ELFOSABI_AROS,       15,
610	`Amiga Research OS')
611DEFINE_ELF_OSABI(ELFOSABI_FENIXOS,    16,
612	`The FenixOS highly scalable multi-core OS')
613DEFINE_ELF_OSABI(ELFOSABI_CLOUDABI,   17,
614	`Nuxi CloudABI')
615DEFINE_ELF_OSABI(ELFOSABI_OPENVOS,    18,
616	`Stratus Technologies OpenVOS')
617DEFINE_ELF_OSABI(ELFOSABI_ARM_AEABI,  64,
618	`ARM specific symbol versioning extensions')
619DEFINE_ELF_OSABI(ELFOSABI_ARM,        97,
620	`ARM ABI')
621DEFINE_ELF_OSABI(ELFOSABI_STANDALONE, 255,
622	`Standalone (embedded) application')
623')
624
625# OS ABI aliases.
626define(`DEFINE_ELF_OSABI_ALIASES',`
627DEFINE_ELF_OSABI_ALIAS(ELFOSABI_LINUX,	ELFOSABI_GNU)
628')
629
630#
631# ELF Machine types: (EM_*).
632#
633define(`DEFINE_ELF_MACHINE_TYPES',`
634DEFINE_ELF_MACHINE_TYPE(EM_NONE,             0,
635	`No machine')
636DEFINE_ELF_MACHINE_TYPE(EM_M32,              1,
637	`AT&T WE 32100')
638DEFINE_ELF_MACHINE_TYPE(EM_SPARC,            2,
639	`SPARC')
640DEFINE_ELF_MACHINE_TYPE(EM_386,              3,
641	`Intel 80386')
642DEFINE_ELF_MACHINE_TYPE(EM_68K,              4,
643	`Motorola 68000')
644DEFINE_ELF_MACHINE_TYPE(EM_88K,              5,
645	`Motorola 88000')
646DEFINE_ELF_MACHINE_TYPE(EM_IAMCU,            6,
647	`Intel MCU')
648DEFINE_ELF_MACHINE_TYPE(EM_860,              7,
649	`Intel 80860')
650DEFINE_ELF_MACHINE_TYPE(EM_MIPS,             8,
651	`MIPS I Architecture')
652DEFINE_ELF_MACHINE_TYPE(EM_S370,             9,
653	`IBM System/370 Processor')
654DEFINE_ELF_MACHINE_TYPE(EM_MIPS_RS3_LE,      10,
655	`MIPS RS3000 Little-endian')
656DEFINE_ELF_MACHINE_TYPE(EM_PARISC,           15,
657	`Hewlett-Packard PA-RISC')
658DEFINE_ELF_MACHINE_TYPE(EM_VPP500,           17,
659	`Fujitsu VPP500')
660DEFINE_ELF_MACHINE_TYPE(EM_SPARC32PLUS,      18,
661	`Enhanced instruction set SPARC')
662DEFINE_ELF_MACHINE_TYPE(EM_960,              19,
663	`Intel 80960')
664DEFINE_ELF_MACHINE_TYPE(EM_PPC,              20,
665	`PowerPC')
666DEFINE_ELF_MACHINE_TYPE(EM_PPC64,            21,
667	`64-bit PowerPC')
668DEFINE_ELF_MACHINE_TYPE(EM_S390,             22,
669	`IBM System/390 Processor')
670DEFINE_ELF_MACHINE_TYPE(EM_SPU,              23,
671	`IBM SPU/SPC')
672DEFINE_ELF_MACHINE_TYPE(EM_V800,             36,
673	`NEC V800')
674DEFINE_ELF_MACHINE_TYPE(EM_FR20,             37,
675	`Fujitsu FR20')
676DEFINE_ELF_MACHINE_TYPE(EM_RH32,             38,
677	`TRW RH-32')
678DEFINE_ELF_MACHINE_TYPE(EM_RCE,              39,
679	`Motorola RCE')
680DEFINE_ELF_MACHINE_TYPE(EM_ARM,              40,
681	`Advanced RISC Machines ARM')
682DEFINE_ELF_MACHINE_TYPE(EM_ALPHA,            41,
683	`Digital Alpha')
684DEFINE_ELF_MACHINE_TYPE(EM_SH,               42,
685	`Hitachi SH')
686DEFINE_ELF_MACHINE_TYPE(EM_SPARCV9,          43,
687	`SPARC Version 9')
688DEFINE_ELF_MACHINE_TYPE(EM_TRICORE,          44,
689	`Siemens TriCore embedded processor')
690DEFINE_ELF_MACHINE_TYPE(EM_ARC,              45,
691	`Argonaut RISC Core, Argonaut Technologies Inc.')
692DEFINE_ELF_MACHINE_TYPE(EM_H8_300,           46,
693	`Hitachi H8/300')
694DEFINE_ELF_MACHINE_TYPE(EM_H8_300H,          47,
695	`Hitachi H8/300H')
696DEFINE_ELF_MACHINE_TYPE(EM_H8S,              48,
697	`Hitachi H8S')
698DEFINE_ELF_MACHINE_TYPE(EM_H8_500,           49,
699	`Hitachi H8/500')
700DEFINE_ELF_MACHINE_TYPE(EM_IA_64,            50,
701	`Intel IA-64 processor architecture')
702DEFINE_ELF_MACHINE_TYPE(EM_MIPS_X,           51,
703	`Stanford MIPS-X')
704DEFINE_ELF_MACHINE_TYPE(EM_COLDFIRE,         52,
705	`Motorola ColdFire')
706DEFINE_ELF_MACHINE_TYPE(EM_68HC12,           53,
707	`Motorola M68HC12')
708DEFINE_ELF_MACHINE_TYPE(EM_MMA,              54,
709	`Fujitsu MMA Multimedia Accelerator')
710DEFINE_ELF_MACHINE_TYPE(EM_PCP,              55,
711	`Siemens PCP')
712DEFINE_ELF_MACHINE_TYPE(EM_NCPU,             56,
713	`Sony nCPU embedded RISC processor')
714DEFINE_ELF_MACHINE_TYPE(EM_NDR1,             57,
715	`Denso NDR1 microprocessor')
716DEFINE_ELF_MACHINE_TYPE(EM_STARCORE,         58,
717	`Motorola Star*Core processor')
718DEFINE_ELF_MACHINE_TYPE(EM_ME16,             59,
719	`Toyota ME16 processor')
720DEFINE_ELF_MACHINE_TYPE(EM_ST100,            60,
721	`STMicroelectronics ST100 processor')
722DEFINE_ELF_MACHINE_TYPE(EM_TINYJ,            61,
723	`Advanced Logic Corp. TinyJ embedded processor family')
724DEFINE_ELF_MACHINE_TYPE(EM_X86_64,           62,
725	`AMD x86-64 architecture')
726DEFINE_ELF_MACHINE_TYPE(EM_PDSP,             63,
727	`Sony DSP Processor')
728DEFINE_ELF_MACHINE_TYPE(EM_PDP10,            64,
729	`Digital Equipment Corp. PDP-10')
730DEFINE_ELF_MACHINE_TYPE(EM_PDP11,            65,
731	`Digital Equipment Corp. PDP-11')
732DEFINE_ELF_MACHINE_TYPE(EM_FX66,             66,
733	`Siemens FX66 microcontroller')
734DEFINE_ELF_MACHINE_TYPE(EM_ST9PLUS,          67,
735	`STMicroelectronics ST9+ 8/16 bit microcontroller')
736DEFINE_ELF_MACHINE_TYPE(EM_ST7,              68,
737	`STMicroelectronics ST7 8-bit microcontroller')
738DEFINE_ELF_MACHINE_TYPE(EM_68HC16,           69,
739	`Motorola MC68HC16 Microcontroller')
740DEFINE_ELF_MACHINE_TYPE(EM_68HC11,           70,
741	`Motorola MC68HC11 Microcontroller')
742DEFINE_ELF_MACHINE_TYPE(EM_68HC08,           71,
743	`Motorola MC68HC08 Microcontroller')
744DEFINE_ELF_MACHINE_TYPE(EM_68HC05,           72,
745	`Motorola MC68HC05 Microcontroller')
746DEFINE_ELF_MACHINE_TYPE(EM_SVX,              73,
747	`Silicon Graphics SVx')
748DEFINE_ELF_MACHINE_TYPE(EM_ST19,             74,
749	`STMicroelectronics ST19 8-bit microcontroller')
750DEFINE_ELF_MACHINE_TYPE(EM_VAX,              75,
751	`Digital VAX')
752DEFINE_ELF_MACHINE_TYPE(EM_CRIS,             76,
753	`Axis Communications 32-bit embedded processor')
754DEFINE_ELF_MACHINE_TYPE(EM_JAVELIN,          77,
755	`Infineon Technologies 32-bit embedded processor')
756DEFINE_ELF_MACHINE_TYPE(EM_FIREPATH,         78,
757	`Element 14 64-bit DSP Processor')
758DEFINE_ELF_MACHINE_TYPE(EM_ZSP,              79,
759	`LSI Logic 16-bit DSP Processor')
760DEFINE_ELF_MACHINE_TYPE(EM_MMIX,             80,
761	`Educational 64-bit processor by Donald Knuth')
762DEFINE_ELF_MACHINE_TYPE(EM_HUANY,            81,
763	`Harvard University machine-independent object files')
764DEFINE_ELF_MACHINE_TYPE(EM_PRISM,            82,
765	`SiTera Prism')
766DEFINE_ELF_MACHINE_TYPE(EM_AVR,              83,
767	`Atmel AVR 8-bit microcontroller')
768DEFINE_ELF_MACHINE_TYPE(EM_FR30,             84,
769	`Fujitsu FR30')
770DEFINE_ELF_MACHINE_TYPE(EM_D10V,             85,
771	`Mitsubishi D10V')
772DEFINE_ELF_MACHINE_TYPE(EM_D30V,             86,
773	`Mitsubishi D30V')
774DEFINE_ELF_MACHINE_TYPE(EM_V850,             87,
775	`NEC v850')
776DEFINE_ELF_MACHINE_TYPE(EM_M32R,             88,
777	`Mitsubishi M32R')
778DEFINE_ELF_MACHINE_TYPE(EM_MN10300,          89,
779	`Matsushita MN10300')
780DEFINE_ELF_MACHINE_TYPE(EM_MN10200,          90,
781	`Matsushita MN10200')
782DEFINE_ELF_MACHINE_TYPE(EM_PJ,               91,
783	`picoJava')
784DEFINE_ELF_MACHINE_TYPE(EM_OPENRISC,         92,
785	`OpenRISC 32-bit embedded processor')
786DEFINE_ELF_MACHINE_TYPE(EM_ARC_COMPACT,      93,
787	`ARC International ARCompact processor')
788DEFINE_ELF_MACHINE_TYPE(EM_XTENSA,           94,
789	`Tensilica Xtensa Architecture')
790DEFINE_ELF_MACHINE_TYPE(EM_VIDEOCORE,        95,
791	`Alphamosaic VideoCore processor')
792DEFINE_ELF_MACHINE_TYPE(EM_TMM_GPP,          96,
793	`Thompson Multimedia General Purpose Processor')
794DEFINE_ELF_MACHINE_TYPE(EM_NS32K,            97,
795	`National Semiconductor 32000 series')
796DEFINE_ELF_MACHINE_TYPE(EM_TPC,              98,
797	`Tenor Network TPC processor')
798DEFINE_ELF_MACHINE_TYPE(EM_SNP1K,            99,
799	`Trebia SNP 1000 processor')
800DEFINE_ELF_MACHINE_TYPE(EM_ST200,            100,
801	`STMicroelectronics (www.st.com) ST200 microcontroller')
802DEFINE_ELF_MACHINE_TYPE(EM_IP2K,             101,
803	`Ubicom IP2xxx microcontroller family')
804DEFINE_ELF_MACHINE_TYPE(EM_MAX,              102,
805	`MAX Processor')
806DEFINE_ELF_MACHINE_TYPE(EM_CR,               103,
807	`National Semiconductor CompactRISC microprocessor')
808DEFINE_ELF_MACHINE_TYPE(EM_F2MC16,           104,
809	`Fujitsu F2MC16')
810DEFINE_ELF_MACHINE_TYPE(EM_MSP430,           105,
811	`Texas Instruments embedded microcontroller msp430')
812DEFINE_ELF_MACHINE_TYPE(EM_BLACKFIN,         106,
813	`Analog Devices Blackfin (DSP) processor')
814DEFINE_ELF_MACHINE_TYPE(EM_SE_C33,           107,
815	`S1C33 Family of Seiko Epson processors')
816DEFINE_ELF_MACHINE_TYPE(EM_SEP,              108,
817	`Sharp embedded microprocessor')
818DEFINE_ELF_MACHINE_TYPE(EM_ARCA,             109,
819	`Arca RISC Microprocessor')
820DEFINE_ELF_MACHINE_TYPE(EM_UNICORE,          110,
821	`Microprocessor series from PKU-Unity Ltd. and MPRC of Peking University')
822DEFINE_ELF_MACHINE_TYPE(EM_EXCESS,           111,
823	`eXcess: 16/32/64-bit configurable embedded CPU')
824DEFINE_ELF_MACHINE_TYPE(EM_DXP,              112,
825	`Icera Semiconductor Inc. Deep Execution Processor')
826DEFINE_ELF_MACHINE_TYPE(EM_ALTERA_NIOS2,     113,
827	`Altera Nios II soft-core processor')
828DEFINE_ELF_MACHINE_TYPE(EM_CRX,              114,
829	`National Semiconductor CompactRISC CRX microprocessor')
830DEFINE_ELF_MACHINE_TYPE(EM_XGATE,            115,
831	`Motorola XGATE embedded processor')
832DEFINE_ELF_MACHINE_TYPE(EM_C166,             116,
833	`Infineon C16x/XC16x processor')
834DEFINE_ELF_MACHINE_TYPE(EM_M16C,             117,
835	`Renesas M16C series microprocessors')
836DEFINE_ELF_MACHINE_TYPE(EM_DSPIC30F,         118,
837	`Microchip Technology dsPIC30F Digital Signal Controller')
838DEFINE_ELF_MACHINE_TYPE(EM_CE,               119,
839	`Freescale Communication Engine RISC core')
840DEFINE_ELF_MACHINE_TYPE(EM_M32C,             120,
841	`Renesas M32C series microprocessors')
842DEFINE_ELF_MACHINE_TYPE(EM_TSK3000,          131,
843	`Altium TSK3000 core')
844DEFINE_ELF_MACHINE_TYPE(EM_RS08,             132,
845	`Freescale RS08 embedded processor')
846DEFINE_ELF_MACHINE_TYPE(EM_SHARC,            133,
847	`Analog Devices SHARC family of 32-bit DSP processors')
848DEFINE_ELF_MACHINE_TYPE(EM_ECOG2,            134,
849	`Cyan Technology eCOG2 microprocessor')
850DEFINE_ELF_MACHINE_TYPE(EM_SCORE7,           135,
851	`Sunplus S+core7 RISC processor')
852DEFINE_ELF_MACHINE_TYPE(EM_DSP24,            136,
853	`New Japan Radio (NJR) 24-bit DSP Processor')
854DEFINE_ELF_MACHINE_TYPE(EM_VIDEOCORE3,       137,
855	`Broadcom VideoCore III processor')
856DEFINE_ELF_MACHINE_TYPE(EM_LATTICEMICO32,    138,
857	`RISC processor for Lattice FPGA architecture')
858DEFINE_ELF_MACHINE_TYPE(EM_SE_C17,           139,
859	`Seiko Epson C17 family')
860DEFINE_ELF_MACHINE_TYPE(EM_TI_C6000,         140,
861	`The Texas Instruments TMS320C6000 DSP family')
862DEFINE_ELF_MACHINE_TYPE(EM_TI_C2000,         141,
863	`The Texas Instruments TMS320C2000 DSP family')
864DEFINE_ELF_MACHINE_TYPE(EM_TI_C5500,         142,
865	`The Texas Instruments TMS320C55x DSP family')
866DEFINE_ELF_MACHINE_TYPE(EM_MMDSP_PLUS,       160,
867	`STMicroelectronics 64bit VLIW Data Signal Processor')
868DEFINE_ELF_MACHINE_TYPE(EM_CYPRESS_M8C,      161,
869	`Cypress M8C microprocessor')
870DEFINE_ELF_MACHINE_TYPE(EM_R32C,             162,
871	`Renesas R32C series microprocessors')
872DEFINE_ELF_MACHINE_TYPE(EM_TRIMEDIA,         163,
873	`NXP Semiconductors TriMedia architecture family')
874DEFINE_ELF_MACHINE_TYPE(EM_QDSP6,            164,
875	`QUALCOMM DSP6 Processor')
876DEFINE_ELF_MACHINE_TYPE(EM_8051,             165,
877	`Intel 8051 and variants')
878DEFINE_ELF_MACHINE_TYPE(EM_STXP7X,           166,
879	`STMicroelectronics STxP7x family of configurable and extensible RISC processors')
880DEFINE_ELF_MACHINE_TYPE(EM_NDS32,            167,
881	`Andes Technology compact code size embedded RISC processor family')
882DEFINE_ELF_MACHINE_TYPE(EM_ECOG1,            168,
883	`Cyan Technology eCOG1X family')
884DEFINE_ELF_MACHINE_TYPE(EM_ECOG1X,           168,
885	`Cyan Technology eCOG1X family')
886DEFINE_ELF_MACHINE_TYPE(EM_MAXQ30,           169,
887	`Dallas Semiconductor MAXQ30 Core Micro-controllers')
888DEFINE_ELF_MACHINE_TYPE(EM_XIMO16,           170,
889	`New Japan Radio (NJR) 16-bit DSP Processor')
890DEFINE_ELF_MACHINE_TYPE(EM_MANIK,            171,
891	`M2000 Reconfigurable RISC Microprocessor')
892DEFINE_ELF_MACHINE_TYPE(EM_CRAYNV2,          172,
893	`Cray Inc. NV2 vector architecture')
894DEFINE_ELF_MACHINE_TYPE(EM_RX,               173,
895	`Renesas RX family')
896DEFINE_ELF_MACHINE_TYPE(EM_METAG,            174,
897	`Imagination Technologies META processor architecture')
898DEFINE_ELF_MACHINE_TYPE(EM_MCST_ELBRUS,      175,
899	`MCST Elbrus general purpose hardware architecture')
900DEFINE_ELF_MACHINE_TYPE(EM_ECOG16,           176,
901	`Cyan Technology eCOG16 family')
902DEFINE_ELF_MACHINE_TYPE(EM_CR16,             177,
903	`National Semiconductor CompactRISC CR16 16-bit microprocessor')
904DEFINE_ELF_MACHINE_TYPE(EM_ETPU,             178,
905	`Freescale Extended Time Processing Unit')
906DEFINE_ELF_MACHINE_TYPE(EM_SLE9X,            179,
907	`Infineon Technologies SLE9X core')
908DEFINE_ELF_MACHINE_TYPE(EM_AARCH64,          183,
909	`AArch64 (64-bit ARM)')
910DEFINE_ELF_MACHINE_TYPE(EM_AVR32,            185,
911	`Atmel Corporation 32-bit microprocessor family')
912DEFINE_ELF_MACHINE_TYPE(EM_STM8,             186,
913	`STMicroeletronics STM8 8-bit microcontroller')
914DEFINE_ELF_MACHINE_TYPE(EM_TILE64,           187,
915	`Tilera TILE64 multicore architecture family')
916DEFINE_ELF_MACHINE_TYPE(EM_TILEPRO,          188,
917	`Tilera TILEPro multicore architecture family')
918DEFINE_ELF_MACHINE_TYPE(EM_MICROBLAZE,       189,
919	`Xilinx MicroBlaze 32-bit RISC soft processor core')
920DEFINE_ELF_MACHINE_TYPE(EM_CUDA,             190,
921	`NVIDIA CUDA architecture')
922DEFINE_ELF_MACHINE_TYPE(EM_TILEGX,           191,
923	`Tilera TILE-Gx multicore architecture family')
924DEFINE_ELF_MACHINE_TYPE(EM_CLOUDSHIELD,      192,
925	`CloudShield architecture family')
926DEFINE_ELF_MACHINE_TYPE(EM_COREA_1ST,        193,
927	`KIPO-KAIST Core-A 1st generation processor family')
928DEFINE_ELF_MACHINE_TYPE(EM_COREA_2ND,        194,
929	`KIPO-KAIST Core-A 2nd generation processor family')
930DEFINE_ELF_MACHINE_TYPE(EM_ARC_COMPACT2,     195,
931	`Synopsys ARCompact V2')
932DEFINE_ELF_MACHINE_TYPE(EM_OPEN8,            196,
933	`Open8 8-bit RISC soft processor core')
934DEFINE_ELF_MACHINE_TYPE(EM_RL78,             197,
935	`Renesas RL78 family')
936DEFINE_ELF_MACHINE_TYPE(EM_VIDEOCORE5,       198,
937	`Broadcom VideoCore V processor')
938DEFINE_ELF_MACHINE_TYPE(EM_78KOR,            199,
939	`Renesas 78KOR family')
940DEFINE_ELF_MACHINE_TYPE(EM_56800EX,          200,
941	`Freescale 56800EX Digital Signal Controller')
942DEFINE_ELF_MACHINE_TYPE(EM_BA1,              201,
943	`Beyond BA1 CPU architecture')
944DEFINE_ELF_MACHINE_TYPE(EM_BA2,              202,
945	`Beyond BA2 CPU architecture')
946DEFINE_ELF_MACHINE_TYPE(EM_XCORE,            203,
947	`XMOS xCORE processor family')
948DEFINE_ELF_MACHINE_TYPE(EM_MCHP_PIC,         204,
949	`Microchip 8-bit PIC(r) family')
950DEFINE_ELF_MACHINE_TYPE(EM_INTELGT,          205,
951	`Intel Graphics Technology')
952DEFINE_ELF_MACHINE_TYPE(EM_INTEL206,         206,
953	`Reserved by Intel')
954DEFINE_ELF_MACHINE_TYPE(EM_INTEL207,         207,
955	`Reserved by Intel')
956DEFINE_ELF_MACHINE_TYPE(EM_INTEL208,         208,
957	`Reserved by Intel')
958DEFINE_ELF_MACHINE_TYPE(EM_INTEL209,         209,
959	`Reserved by Intel')
960DEFINE_ELF_MACHINE_TYPE(EM_KM32,             210,
961	`KM211 KM32 32-bit processor')
962DEFINE_ELF_MACHINE_TYPE(EM_KMX32,            211,
963	`KM211 KMX32 32-bit processor')
964DEFINE_ELF_MACHINE_TYPE(EM_KMX16,            212,
965	`KM211 KMX16 16-bit processor')
966DEFINE_ELF_MACHINE_TYPE(EM_KMX8,             213,
967	`KM211 KMX8 8-bit processor')
968DEFINE_ELF_MACHINE_TYPE(EM_KVARC,            214,
969	`KM211 KMX32 KVARC processor')
970DEFINE_ELF_MACHINE_TYPE(EM_CDP,              215,
971	`Paneve CDP architecture family')
972DEFINE_ELF_MACHINE_TYPE(EM_COGE,             216,
973	`Cognitive Smart Memory Processor')
974DEFINE_ELF_MACHINE_TYPE(EM_COOL,             217,
975	`Bluechip Systems CoolEngine')
976DEFINE_ELF_MACHINE_TYPE(EM_NORC,             218,
977	`Nanoradio Optimized RISC')
978DEFINE_ELF_MACHINE_TYPE(EM_CSR_KALIMBA,      219,
979	`CSR Kalimba architecture family')
980DEFINE_ELF_MACHINE_TYPE(EM_Z80,              220,
981	`Zilog Z80')
982DEFINE_ELF_MACHINE_TYPE(EM_VISIUM,           221,
983	`Controls and Data Services VISIUMcore processor')
984DEFINE_ELF_MACHINE_TYPE(EM_FT32,             222,
985	`FTDI Chip FT32 high performance 32-bit RISC architecture')
986DEFINE_ELF_MACHINE_TYPE(EM_MOXIE,            223,
987	`Moxie processor family')
988DEFINE_ELF_MACHINE_TYPE(EM_AMDGPU,           224,
989	`AMD GPU architecture')
990DEFINE_ELF_MACHINE_TYPE(EM_RISCV,            243,
991	`RISC-V')
992DEFINE_ELF_MACHINE_TYPE(EM_LANAI,            244,
993	`Lanai processor')
994DEFINE_ELF_MACHINE_TYPE(EM_CEVA,             245,
995	`CEVA Processor Architecture Family')
996DEFINE_ELF_MACHINE_TYPE(EM_CEVA_X2,          246,
997	`CEVA X2 Processor Family')
998DEFINE_ELF_MACHINE_TYPE(EM_BPF,              247,
999	`Linux BPF ��� in-kernel virtual machine')
1000DEFINE_ELF_MACHINE_TYPE(EM_GRAPHCORE_IPU,    248,
1001	`Graphcore Intelligent Processing Unit')
1002DEFINE_ELF_MACHINE_TYPE(EM_IMG1,             249,
1003	`Imagination Technologies')
1004DEFINE_ELF_MACHINE_TYPE(EM_NFP,              250,
1005	`Netronome Flow Processor (NFP)')
1006DEFINE_ELF_MACHINE_TYPE(EM_CSKY,             252,
1007	`C-SKY processor family')
1008DEFINE_ELF_MACHINE_TYPE(EM_65816,            257,
1009	`WDC 65816/65C816')
1010DEFINE_ELF_MACHINE_TYPE(EM_KF32,             259,
1011	`ChipON KungFu 32')
1012')
1013
1014define(`DEFINE_ELF_MACHINE_TYPE_SYNONYMS',`
1015DEFINE_ELF_MACHINE_TYPE_SYNONYM(EM_AMD64, EM_X86_64)
1016DEFINE_ELF_MACHINE_TYPE_SYNONYM(EM_ARC_A5, EM_ARC_COMPACT)
1017')
1018
1019#
1020# ELF file types: (ET_*).
1021#
1022define(`DEFINE_ELF_TYPES',`
1023DEFINE_ELF_TYPE(ET_NONE,   0,
1024	`No file type')
1025DEFINE_ELF_TYPE(ET_REL,    1,
1026	`Relocatable object')
1027DEFINE_ELF_TYPE(ET_EXEC,   2,
1028	`Executable')
1029DEFINE_ELF_TYPE(ET_DYN,    3,
1030	`Shared object')
1031DEFINE_ELF_TYPE(ET_CORE,   4,
1032	`Core file')
1033DEFINE_ELF_TYPE(ET_LOOS,   0xFE00U,
1034	`Begin OS-specific range')
1035DEFINE_ELF_TYPE(ET_HIOS,   0xFEFFU,
1036	`End OS-specific range')
1037DEFINE_ELF_TYPE(ET_LOPROC, 0xFF00U,
1038	`Begin processor-specific range')
1039DEFINE_ELF_TYPE(ET_HIPROC, 0xFFFFU,
1040	`End processor-specific range')
1041')
1042
1043# ELF file format version numbers.
1044define(`DEFINE_ELF_FILE_VERSIONS',`
1045DEFINE_ELF_FILE_VERSION(EV_NONE, 0)
1046DEFINE_ELF_FILE_VERSION(EV_CURRENT, 1)
1047')
1048
1049#
1050# Flags for section groups.
1051#
1052define(`DEFINE_GRP_FLAGS',`
1053DEFINE_GRP_FLAG(GRP_COMDAT, 	0x1,
1054	`COMDAT semantics')
1055DEFINE_GRP_FLAG(GRP_MASKOS,	0x0ff00000,
1056	`OS-specific flags')
1057DEFINE_GRP_FLAG(GRP_MASKPROC, 	0xf0000000,
1058	`processor-specific flags')
1059')
1060
1061#
1062# Flags / mask for .gnu.versym sections.
1063#
1064define(`DEFINE_VERSYMS',`
1065DEFINE_VERSYM(VERSYM_VERSION,	0x7fff)
1066DEFINE_VERSYM(VERSYM_HIDDEN,	0x8000)
1067')
1068
1069#
1070# Flags used by program header table entries.
1071#
1072define(`DEFINE_PHDR_FLAGS',`
1073DEFINE_PHDR_FLAG(PF_X,                0x1,
1074	`Execute')
1075DEFINE_PHDR_FLAG(PF_W,                0x2,
1076	`Write')
1077DEFINE_PHDR_FLAG(PF_R,                0x4,
1078	`Read')
1079DEFINE_PHDR_FLAG(PF_MASKOS,           0x0ff00000,
1080	`OS-specific flags')
1081DEFINE_PHDR_FLAG(PF_MASKPROC,         0xf0000000,
1082	`Processor-specific flags')
1083DEFINE_PHDR_FLAG(PF_ARM_SB,           0x10000000,
1084	`segment contains the location addressed by the static base')
1085DEFINE_PHDR_FLAG(PF_ARM_PI,           0x20000000,
1086	`segment is position-independent')
1087DEFINE_PHDR_FLAG(PF_ARM_ABS,          0x40000000,
1088	`segment must be loaded at its base address')
1089')
1090
1091#
1092# Types of program header table entries.
1093#
1094define(`DEFINE_PHDR_TYPES',`
1095DEFINE_PHDR_TYPE(PT_NULL,             0UL,
1096	`ignored entry')
1097DEFINE_PHDR_TYPE(PT_LOAD,             1UL,
1098	`loadable segment')
1099DEFINE_PHDR_TYPE(PT_DYNAMIC,          2UL,
1100	`contains dynamic linking information')
1101DEFINE_PHDR_TYPE(PT_INTERP,           3UL,
1102	`names an interpreter')
1103DEFINE_PHDR_TYPE(PT_NOTE,             4UL,
1104	`auxiliary information')
1105DEFINE_PHDR_TYPE(PT_SHLIB,            5UL,
1106	`reserved')
1107DEFINE_PHDR_TYPE(PT_PHDR,             6UL,
1108	`describes the program header itself')
1109DEFINE_PHDR_TYPE(PT_TLS,              7UL,
1110	`thread local storage')
1111DEFINE_PHDR_TYPE(PT_LOOS,             0x60000000UL,
1112	`start of OS-specific range')
1113DEFINE_PHDR_TYPE(PT_SUNW_UNWIND,      0x6464E550UL,
1114	`Solaris/amd64 stack unwind tables')
1115DEFINE_PHDR_TYPE(PT_GNU_EH_FRAME,     0x6474E550UL,
1116	`GCC generated .eh_frame_hdr segment')
1117DEFINE_PHDR_TYPE(PT_GNU_STACK,	    0x6474E551UL,
1118	`Stack flags')
1119DEFINE_PHDR_TYPE(PT_GNU_RELRO,	    0x6474E552UL,
1120	`Segment becomes read-only after relocation')
1121DEFINE_PHDR_TYPE(PT_OPENBSD_RANDOMIZE,0x65A3DBE6UL,
1122	`Segment filled with random data')
1123DEFINE_PHDR_TYPE(PT_OPENBSD_WXNEEDED, 0x65A3DBE7UL,
1124	`Program violates W^X')
1125DEFINE_PHDR_TYPE(PT_OPENBSD_BOOTDATA, 0x65A41BE6UL,
1126	`Boot data')
1127DEFINE_PHDR_TYPE(PT_SUNWBSS,          0x6FFFFFFAUL,
1128	`A Solaris .SUNW_bss section')
1129DEFINE_PHDR_TYPE(PT_SUNWSTACK,        0x6FFFFFFBUL,
1130	`A Solaris process stack')
1131DEFINE_PHDR_TYPE(PT_SUNWDTRACE,       0x6FFFFFFCUL,
1132	`Used by dtrace(1)')
1133DEFINE_PHDR_TYPE(PT_SUNWCAP,          0x6FFFFFFDUL,
1134	`Special hardware capability requirements')
1135DEFINE_PHDR_TYPE(PT_HIOS,             0x6FFFFFFFUL,
1136	`end of OS-specific range')
1137DEFINE_PHDR_TYPE(PT_LOPROC,           0x70000000UL,
1138	`start of processor-specific range')
1139DEFINE_PHDR_TYPE(PT_ARM_ARCHEXT,      0x70000000UL,
1140	`platform architecture compatibility information')
1141DEFINE_PHDR_TYPE(PT_ARM_EXIDX,        0x70000001UL,
1142	`exception unwind tables')
1143DEFINE_PHDR_TYPE(PT_MIPS_REGINFO,     0x70000000UL,
1144	`register usage information')
1145DEFINE_PHDR_TYPE(PT_MIPS_RTPROC,      0x70000001UL,
1146	`runtime procedure table')
1147DEFINE_PHDR_TYPE(PT_MIPS_OPTIONS,     0x70000002UL,
1148	`options segment')
1149DEFINE_PHDR_TYPE(PT_HIPROC,           0x7FFFFFFFUL,
1150	`end of processor-specific range')
1151')
1152
1153define(`DEFINE_PHDR_TYPE_SYNONYMS',`
1154DEFINE_PHDR_TYPE_SYNONYM(PT_ARM_UNWIND,	PT_ARM_EXIDX)
1155DEFINE_PHDR_TYPE_SYNONYM(PT_HISUNW,	PT_HIOS)
1156DEFINE_PHDR_TYPE_SYNONYM(PT_LOSUNW,	PT_SUNWBSS)
1157')
1158
1159#
1160# Section flags.
1161#
1162define(`DEFINE_SECTION_FLAGS',`
1163DEFINE_SECTION_FLAG(SHF_WRITE,           0x1,
1164	`writable during program execution')
1165DEFINE_SECTION_FLAG(SHF_ALLOC,           0x2,
1166	`occupies memory during program execution')
1167DEFINE_SECTION_FLAG(SHF_EXECINSTR,       0x4,
1168	`executable instructions')
1169DEFINE_SECTION_FLAG(SHF_MERGE,           0x10,
1170	`may be merged to prevent duplication')
1171DEFINE_SECTION_FLAG(SHF_STRINGS,         0x20,
1172	`NUL-terminated character strings')
1173DEFINE_SECTION_FLAG(SHF_INFO_LINK,       0x40,
1174	`the sh_info field holds a link')
1175DEFINE_SECTION_FLAG(SHF_LINK_ORDER,      0x80,
1176	`special ordering requirements during linking')
1177DEFINE_SECTION_FLAG(SHF_OS_NONCONFORMING, 0x100,
1178	`requires OS-specific processing during linking')
1179DEFINE_SECTION_FLAG(SHF_GROUP,           0x200,
1180	`member of a section group')
1181DEFINE_SECTION_FLAG(SHF_TLS,             0x400,
1182	`holds thread-local storage')
1183DEFINE_SECTION_FLAG(SHF_COMPRESSED,      0x800,
1184	`holds compressed data')
1185DEFINE_SECTION_FLAG(SHF_MASKOS,          0x0FF00000UL,
1186	`bits reserved for OS-specific semantics')
1187DEFINE_SECTION_FLAG(SHF_AMD64_LARGE,     0x10000000UL,
1188	`section uses large code model')
1189DEFINE_SECTION_FLAG(SHF_ENTRYSECT,       0x10000000UL,
1190	`section contains an entry point (ARM)')
1191DEFINE_SECTION_FLAG(SHF_COMDEF,          0x80000000UL,
1192	`section may be multiply defined in input to link step (ARM)')
1193DEFINE_SECTION_FLAG(SHF_MIPS_GPREL,      0x10000000UL,
1194	`section must be part of global data area')
1195DEFINE_SECTION_FLAG(SHF_MIPS_MERGE,      0x20000000UL,
1196	`section data should be merged to eliminate duplication')
1197DEFINE_SECTION_FLAG(SHF_MIPS_ADDR,       0x40000000UL,
1198	`section data is addressed by default')
1199DEFINE_SECTION_FLAG(SHF_MIPS_STRING,     0x80000000UL,
1200	`section data is string data by default')
1201DEFINE_SECTION_FLAG(SHF_MIPS_NOSTRIP,    0x08000000UL,
1202	`section data may not be stripped')
1203DEFINE_SECTION_FLAG(SHF_MIPS_LOCAL,      0x04000000UL,
1204	`section data local to process')
1205DEFINE_SECTION_FLAG(SHF_MIPS_NAMES,      0x02000000UL,
1206	`linker must generate implicit hidden weak names')
1207DEFINE_SECTION_FLAG(SHF_MIPS_NODUPE,     0x01000000UL,
1208	`linker must retain only one copy')
1209DEFINE_SECTION_FLAG(SHF_ORDERED,         0x40000000UL,
1210	`section is ordered with respect to other sections')
1211DEFINE_SECTION_FLAG(SHF_EXCLUDE,	     0x80000000UL,
1212	`section is excluded from executables and shared objects')
1213DEFINE_SECTION_FLAG(SHF_MASKPROC,        0xF0000000UL,
1214	`bits reserved for processor-specific semantics')
1215')
1216
1217#
1218# Special section indices.
1219#
1220define(`DEFINE_SECTION_INDICES',`
1221DEFINE_SECTION_INDEX(SHN_UNDEF, 	0,
1222	 `undefined section')
1223DEFINE_SECTION_INDEX(SHN_LORESERVE, 	0xFF00U,
1224	`start of reserved area')
1225DEFINE_SECTION_INDEX(SHN_LOPROC, 	0xFF00U,
1226	`start of processor-specific range')
1227DEFINE_SECTION_INDEX(SHN_BEFORE,	0xFF00U,
1228	`used for section ordering')
1229DEFINE_SECTION_INDEX(SHN_AFTER,	0xFF01U,
1230	`used for section ordering')
1231DEFINE_SECTION_INDEX(SHN_AMD64_LCOMMON, 0xFF02U,
1232	`large common block label')
1233DEFINE_SECTION_INDEX(SHN_MIPS_ACOMMON, 0xFF00U,
1234	`allocated common symbols in a DSO')
1235DEFINE_SECTION_INDEX(SHN_MIPS_TEXT,	0xFF01U,
1236	`Reserved (obsolete)')
1237DEFINE_SECTION_INDEX(SHN_MIPS_DATA,	0xFF02U,
1238	`Reserved (obsolete)')
1239DEFINE_SECTION_INDEX(SHN_MIPS_SCOMMON, 0xFF03U,
1240	`gp-addressable common symbols')
1241DEFINE_SECTION_INDEX(SHN_MIPS_SUNDEFINED, 0xFF04U,
1242	`gp-addressable undefined symbols')
1243DEFINE_SECTION_INDEX(SHN_MIPS_LCOMMON, 0xFF05U,
1244	`local common symbols')
1245DEFINE_SECTION_INDEX(SHN_MIPS_LUNDEFINED, 0xFF06U,
1246	`local undefined symbols')
1247DEFINE_SECTION_INDEX(SHN_HIPROC, 	0xFF1FU,
1248	`end of processor-specific range')
1249DEFINE_SECTION_INDEX(SHN_LOOS, 	0xFF20U,
1250	`start of OS-specific range')
1251DEFINE_SECTION_INDEX(SHN_SUNW_IGNORE, 0xFF3FU,
1252	`used by dtrace')
1253DEFINE_SECTION_INDEX(SHN_HIOS, 	0xFF3FU,
1254	`end of OS-specific range')
1255DEFINE_SECTION_INDEX(SHN_ABS, 	0xFFF1U,
1256	`absolute references')
1257DEFINE_SECTION_INDEX(SHN_COMMON, 	0xFFF2U,
1258	`references to COMMON areas')
1259DEFINE_SECTION_INDEX(SHN_XINDEX, 	0xFFFFU,
1260	`extended index')
1261DEFINE_SECTION_INDEX(SHN_HIRESERVE, 	0xFFFFU,
1262	`end of reserved area')
1263')
1264
1265#
1266# Section types.
1267#
1268define(`DEFINE_SECTION_TYPES',`
1269DEFINE_SECTION_TYPE(SHT_NULL,            0, `inactive header')
1270DEFINE_SECTION_TYPE(SHT_PROGBITS,        1, `program defined information')
1271DEFINE_SECTION_TYPE(SHT_SYMTAB,          2, `symbol table')
1272DEFINE_SECTION_TYPE(SHT_STRTAB,          3, `string table')
1273DEFINE_SECTION_TYPE(SHT_RELA,            4,
1274	`relocation entries with addends')
1275DEFINE_SECTION_TYPE(SHT_HASH,            5, `symbol hash table')
1276DEFINE_SECTION_TYPE(SHT_DYNAMIC,         6,
1277	`information for dynamic linking')
1278DEFINE_SECTION_TYPE(SHT_NOTE,            7, `additional notes')
1279DEFINE_SECTION_TYPE(SHT_NOBITS,          8, `section occupying no space')
1280DEFINE_SECTION_TYPE(SHT_REL,             9,
1281	`relocation entries without addends')
1282DEFINE_SECTION_TYPE(SHT_SHLIB,           10, `reserved')
1283DEFINE_SECTION_TYPE(SHT_DYNSYM,          11, `symbol table')
1284DEFINE_SECTION_TYPE(SHT_INIT_ARRAY,      14,
1285	`pointers to initialization functions')
1286DEFINE_SECTION_TYPE(SHT_FINI_ARRAY,      15,
1287	`pointers to termination functions')
1288DEFINE_SECTION_TYPE(SHT_PREINIT_ARRAY,   16,
1289	`pointers to functions called before initialization')
1290DEFINE_SECTION_TYPE(SHT_GROUP,           17, `defines a section group')
1291DEFINE_SECTION_TYPE(SHT_SYMTAB_SHNDX,    18,
1292	`used for extended section numbering')
1293DEFINE_SECTION_TYPE(SHT_LOOS,            0x60000000UL,
1294	`start of OS-specific range')
1295DEFINE_SECTION_TYPE(SHT_SUNW_dof,	     0x6FFFFFF4UL,
1296	`used by dtrace')
1297DEFINE_SECTION_TYPE(SHT_SUNW_cap,	     0x6FFFFFF5UL,
1298	`capability requirements')
1299DEFINE_SECTION_TYPE(SHT_GNU_ATTRIBUTES,  0x6FFFFFF5UL,
1300	`object attributes')
1301DEFINE_SECTION_TYPE(SHT_SUNW_SIGNATURE,  0x6FFFFFF6UL,
1302	`module verification signature')
1303DEFINE_SECTION_TYPE(SHT_GNU_HASH,	     0x6FFFFFF6UL,
1304	`GNU Hash sections')
1305DEFINE_SECTION_TYPE(SHT_GNU_LIBLIST,     0x6FFFFFF7UL,
1306	`List of libraries to be prelinked')
1307DEFINE_SECTION_TYPE(SHT_SUNW_ANNOTATE,   0x6FFFFFF7UL,
1308	`special section where unresolved references are allowed')
1309DEFINE_SECTION_TYPE(SHT_SUNW_DEBUGSTR,   0x6FFFFFF8UL,
1310	`debugging information')
1311DEFINE_SECTION_TYPE(SHT_CHECKSUM, 	     0x6FFFFFF8UL,
1312	`checksum for dynamic shared objects')
1313DEFINE_SECTION_TYPE(SHT_SUNW_DEBUG,      0x6FFFFFF9UL,
1314	`debugging information')
1315DEFINE_SECTION_TYPE(SHT_SUNW_move,       0x6FFFFFFAUL,
1316	`information to handle partially initialized symbols')
1317DEFINE_SECTION_TYPE(SHT_SUNW_COMDAT,     0x6FFFFFFBUL,
1318	`section supporting merging of multiple copies of data')
1319DEFINE_SECTION_TYPE(SHT_SUNW_syminfo,    0x6FFFFFFCUL,
1320	`additional symbol information')
1321DEFINE_SECTION_TYPE(SHT_SUNW_verdef,     0x6FFFFFFDUL,
1322	`symbol versioning information')
1323DEFINE_SECTION_TYPE(SHT_SUNW_verneed,    0x6FFFFFFEUL,
1324	`symbol versioning requirements')
1325DEFINE_SECTION_TYPE(SHT_SUNW_versym,     0x6FFFFFFFUL,
1326	`symbol versioning table')
1327DEFINE_SECTION_TYPE(SHT_HIOS,            0x6FFFFFFFUL,
1328	`end of OS-specific range')
1329DEFINE_SECTION_TYPE(SHT_LOPROC,          0x70000000UL,
1330	`start of processor-specific range')
1331DEFINE_SECTION_TYPE(SHT_ARM_EXIDX,       0x70000001UL,
1332	`exception index table')
1333DEFINE_SECTION_TYPE(SHT_ARM_PREEMPTMAP,  0x70000002UL,
1334	`BPABI DLL dynamic linking preemption map')
1335DEFINE_SECTION_TYPE(SHT_ARM_ATTRIBUTES,  0x70000003UL,
1336	`object file compatibility attributes')
1337DEFINE_SECTION_TYPE(SHT_ARM_DEBUGOVERLAY, 0x70000004UL,
1338	`overlay debug information')
1339DEFINE_SECTION_TYPE(SHT_ARM_OVERLAYSECTION, 0x70000005UL,
1340	`overlay debug information')
1341DEFINE_SECTION_TYPE(SHT_MIPS_LIBLIST,    0x70000000UL,
1342	`DSO library information used in link')
1343DEFINE_SECTION_TYPE(SHT_MIPS_MSYM,       0x70000001UL,
1344	`MIPS symbol table extension')
1345DEFINE_SECTION_TYPE(SHT_MIPS_CONFLICT,   0x70000002UL,
1346	`symbol conflicting with DSO-defined symbols ')
1347DEFINE_SECTION_TYPE(SHT_MIPS_GPTAB,      0x70000003UL,
1348	`global pointer table')
1349DEFINE_SECTION_TYPE(SHT_MIPS_UCODE,      0x70000004UL,
1350	`reserved')
1351DEFINE_SECTION_TYPE(SHT_MIPS_DEBUG,      0x70000005UL,
1352	`reserved (obsolete debug information)')
1353DEFINE_SECTION_TYPE(SHT_MIPS_REGINFO,    0x70000006UL,
1354	`register usage information')
1355DEFINE_SECTION_TYPE(SHT_MIPS_PACKAGE,    0x70000007UL,
1356	`OSF reserved')
1357DEFINE_SECTION_TYPE(SHT_MIPS_PACKSYM,    0x70000008UL,
1358	`OSF reserved')
1359DEFINE_SECTION_TYPE(SHT_MIPS_RELD,       0x70000009UL,
1360	`dynamic relocation')
1361DEFINE_SECTION_TYPE(SHT_MIPS_IFACE,      0x7000000BUL,
1362	`subprogram interface information')
1363DEFINE_SECTION_TYPE(SHT_MIPS_CONTENT,    0x7000000CUL,
1364	`section content classification')
1365DEFINE_SECTION_TYPE(SHT_MIPS_OPTIONS,     0x7000000DUL,
1366	`general options')
1367DEFINE_SECTION_TYPE(SHT_MIPS_DELTASYM,   0x7000001BUL,
1368	`Delta C++: symbol table')
1369DEFINE_SECTION_TYPE(SHT_MIPS_DELTAINST,  0x7000001CUL,
1370	`Delta C++: instance table')
1371DEFINE_SECTION_TYPE(SHT_MIPS_DELTACLASS, 0x7000001DUL,
1372	`Delta C++: class table')
1373DEFINE_SECTION_TYPE(SHT_MIPS_DWARF,      0x7000001EUL,
1374	`DWARF debug information')
1375DEFINE_SECTION_TYPE(SHT_MIPS_DELTADECL,  0x7000001FUL,
1376	`Delta C++: declarations')
1377DEFINE_SECTION_TYPE(SHT_MIPS_SYMBOL_LIB, 0x70000020UL,
1378	`symbol-to-library mapping')
1379DEFINE_SECTION_TYPE(SHT_MIPS_EVENTS,     0x70000021UL,
1380	`event locations')
1381DEFINE_SECTION_TYPE(SHT_MIPS_TRANSLATE,  0x70000022UL,
1382	`???')
1383DEFINE_SECTION_TYPE(SHT_MIPS_PIXIE,      0x70000023UL,
1384	`special pixie sections')
1385DEFINE_SECTION_TYPE(SHT_MIPS_XLATE,      0x70000024UL,
1386	`address translation table')
1387DEFINE_SECTION_TYPE(SHT_MIPS_XLATE_DEBUG, 0x70000025UL,
1388	`SGI internal address translation table')
1389DEFINE_SECTION_TYPE(SHT_MIPS_WHIRL,      0x70000026UL,
1390	`intermediate code')
1391DEFINE_SECTION_TYPE(SHT_MIPS_EH_REGION,  0x70000027UL,
1392	`C++ exception handling region info')
1393DEFINE_SECTION_TYPE(SHT_MIPS_XLATE_OLD,  0x70000028UL,
1394	`obsolete')
1395DEFINE_SECTION_TYPE(SHT_MIPS_PDR_EXCEPTION, 0x70000029UL,
1396	`runtime procedure descriptor table exception information')
1397DEFINE_SECTION_TYPE(SHT_MIPS_ABIFLAGS,   0x7000002AUL,
1398	`ABI flags')
1399DEFINE_SECTION_TYPE(SHT_SPARC_GOTDATA,   0x70000000UL,
1400	`SPARC-specific data')
1401DEFINE_SECTION_TYPE(SHT_X86_64_UNWIND,   0x70000001UL,
1402	`unwind tables for the AMD64')
1403DEFINE_SECTION_TYPE(SHT_ORDERED,         0x7FFFFFFFUL,
1404	`sort entries in the section')
1405DEFINE_SECTION_TYPE(SHT_HIPROC,          0x7FFFFFFFUL,
1406	`end of processor-specific range')
1407DEFINE_SECTION_TYPE(SHT_LOUSER,          0x80000000UL,
1408	`start of application-specific range')
1409DEFINE_SECTION_TYPE(SHT_HIUSER,          0xFFFFFFFFUL,
1410	`end of application-specific range')
1411')
1412
1413# Aliases for section types.
1414define(`DEFINE_SECTION_TYPE_ALIASES',`
1415DEFINE_SECTION_TYPE_ALIAS(SHT_AMD64_UNWIND,	SHT_X86_64_UNWIND)
1416DEFINE_SECTION_TYPE_ALIAS(SHT_GNU_verdef,	SHT_SUNW_verdef)
1417DEFINE_SECTION_TYPE_ALIAS(SHT_GNU_verneed,	SHT_SUNW_verneed)
1418DEFINE_SECTION_TYPE_ALIAS(SHT_GNU_versym,	SHT_SUNW_versym)
1419')
1420
1421#
1422# Symbol binding information.
1423#
1424define(`DEFINE_SYMBOL_BINDINGS',`
1425DEFINE_SYMBOL_BINDING(STB_LOCAL,           0,
1426	`not visible outside defining object file')
1427DEFINE_SYMBOL_BINDING(STB_GLOBAL,          1,
1428	`visible across all object files being combined')
1429DEFINE_SYMBOL_BINDING(STB_WEAK,            2,
1430	`visible across all object files but with low precedence')
1431DEFINE_SYMBOL_BINDING(STB_LOOS,            10,
1432	`start of OS-specific range')
1433DEFINE_SYMBOL_BINDING(STB_GNU_UNIQUE,      10,
1434	`unique symbol (GNU)')
1435DEFINE_SYMBOL_BINDING(STB_HIOS,            12,
1436	`end of OS-specific range')
1437DEFINE_SYMBOL_BINDING(STB_LOPROC,          13,
1438	`start of processor-specific range')
1439DEFINE_SYMBOL_BINDING(STB_HIPROC,          15,
1440	`end of processor-specific range')
1441')
1442
1443#
1444# Symbol types
1445#
1446define(`DEFINE_SYMBOL_TYPES',`
1447DEFINE_SYMBOL_TYPE(STT_NOTYPE,          0,
1448	`unspecified type')
1449DEFINE_SYMBOL_TYPE(STT_OBJECT,          1,
1450	`data object')
1451DEFINE_SYMBOL_TYPE(STT_FUNC,            2,
1452	`executable code')
1453DEFINE_SYMBOL_TYPE(STT_SECTION,         3,
1454	`section')
1455DEFINE_SYMBOL_TYPE(STT_FILE,            4,
1456	`source file')
1457DEFINE_SYMBOL_TYPE(STT_COMMON,          5,
1458	`uninitialized common block')
1459DEFINE_SYMBOL_TYPE(STT_TLS,             6,
1460	`thread local storage')
1461DEFINE_SYMBOL_TYPE(STT_LOOS,            10,
1462	`start of OS-specific types')
1463DEFINE_SYMBOL_TYPE(STT_GNU_IFUNC,       10,
1464	`indirect function')
1465DEFINE_SYMBOL_TYPE(STT_HIOS,            12,
1466	`end of OS-specific types')
1467DEFINE_SYMBOL_TYPE(STT_LOPROC,          13,
1468	`start of processor-specific types')
1469DEFINE_SYMBOL_TYPE(STT_ARM_TFUNC,       13,
1470	`Thumb function (GNU)')
1471DEFINE_SYMBOL_TYPE(STT_ARM_16BIT,       15,
1472	`Thumb label (GNU)')
1473DEFINE_SYMBOL_TYPE(STT_SPARC_REGISTER,  13,
1474	`SPARC register information')
1475DEFINE_SYMBOL_TYPE(STT_HIPROC,          15,
1476	`end of processor-specific types')
1477')
1478
1479#
1480# Symbol binding.
1481#
1482define(`DEFINE_SYMBOL_BINDING_KINDS',`
1483DEFINE_SYMBOL_BINDING_KIND(SYMINFO_BT_SELF,	0xFFFFU,
1484	`bound to self')
1485DEFINE_SYMBOL_BINDING_KIND(SYMINFO_BT_PARENT,	0xFFFEU,
1486	`bound to parent')
1487DEFINE_SYMBOL_BINDING_KIND(SYMINFO_BT_NONE,	0xFFFDU,
1488	`no special binding')
1489')
1490
1491#
1492# Symbol visibility.
1493#
1494define(`DEFINE_SYMBOL_VISIBILITIES',`
1495DEFINE_SYMBOL_VISIBILITY(STV_DEFAULT,         0,
1496	`as specified by symbol type')
1497DEFINE_SYMBOL_VISIBILITY(STV_INTERNAL,        1,
1498	`as defined by processor semantics')
1499DEFINE_SYMBOL_VISIBILITY(STV_HIDDEN,          2,
1500	`hidden from other components')
1501DEFINE_SYMBOL_VISIBILITY(STV_PROTECTED,       3,
1502	`local references are not preemptable')
1503')
1504
1505#
1506# Symbol flags.
1507#
1508define(`DEFINE_SYMBOL_FLAGS',`
1509DEFINE_SYMBOL_FLAG(SYMINFO_FLG_DIRECT,	0x01,
1510	`directly assocated reference')
1511DEFINE_SYMBOL_FLAG(SYMINFO_FLG_COPY,	0x04,
1512	`definition by copy-relocation')
1513DEFINE_SYMBOL_FLAG(SYMINFO_FLG_LAZYLOAD,	0x08,
1514	`object should be lazily loaded')
1515DEFINE_SYMBOL_FLAG(SYMINFO_FLG_DIRECTBIND,	0x10,
1516	`reference should be directly bound')
1517DEFINE_SYMBOL_FLAG(SYMINFO_FLG_NOEXTDIRECT, 0x20,
1518	`external references not allowed to bind to definition')
1519')
1520
1521#
1522# Version dependencies.
1523#
1524define(`DEFINE_VERSIONING_DEPENDENCIES',`
1525DEFINE_VERSIONING_DEPENDENCY(VER_NDX_LOCAL,	0,
1526	`local scope')
1527DEFINE_VERSIONING_DEPENDENCY(VER_NDX_GLOBAL,	1,
1528	`global scope')
1529')
1530
1531#
1532# Version flags.
1533#
1534define(`DEFINE_VERSIONING_FLAGS',`
1535DEFINE_VERSIONING_FLAG(VER_FLG_BASE,		0x1,
1536	`file version')
1537DEFINE_VERSIONING_FLAG(VER_FLG_WEAK,		0x2,
1538	`weak version')
1539')
1540
1541#
1542# Version needs
1543#
1544define(`DEFINE_VERSIONING_NEEDS',`
1545DEFINE_VERSIONING_NEED(VER_NEED_NONE,		0,
1546	`invalid version')
1547DEFINE_VERSIONING_NEED(VER_NEED_CURRENT,	1,
1548	`current version')
1549')
1550
1551#
1552# Versioning numbers.
1553#
1554define(`DEFINE_VERSIONING_NUMBERS',`
1555DEFINE_VERSIONING_NUMBER(VER_DEF_NONE,		0,
1556	`invalid version')
1557DEFINE_VERSIONING_NUMBER(VER_DEF_CURRENT,	1, 
1558	`current version')
1559')
1560
1561#
1562# Relocation types.
1563#
1564define(`DEFINE_386_RELOCATIONS',`
1565DEFINE_RELOCATION(R_386_NONE,		0)
1566DEFINE_RELOCATION(R_386_32,		1)
1567DEFINE_RELOCATION(R_386_PC32,		2)
1568DEFINE_RELOCATION(R_386_GOT32,		3)
1569DEFINE_RELOCATION(R_386_PLT32,		4)
1570DEFINE_RELOCATION(R_386_COPY,		5)
1571DEFINE_RELOCATION(R_386_GLOB_DAT,	6)
1572DEFINE_RELOCATION(R_386_JUMP_SLOT,	7)
1573DEFINE_RELOCATION(R_386_RELATIVE,	8)
1574DEFINE_RELOCATION(R_386_GOTOFF,		9)
1575DEFINE_RELOCATION(R_386_GOTPC,		10)
1576DEFINE_RELOCATION(R_386_32PLT,		11)
1577DEFINE_RELOCATION(R_386_TLS_TPOFF,	14)
1578DEFINE_RELOCATION(R_386_TLS_IE,		15)
1579DEFINE_RELOCATION(R_386_TLS_GOTIE,	16)
1580DEFINE_RELOCATION(R_386_TLS_LE,		17)
1581DEFINE_RELOCATION(R_386_TLS_GD,		18)
1582DEFINE_RELOCATION(R_386_TLS_LDM,	19)
1583DEFINE_RELOCATION(R_386_16,		20)
1584DEFINE_RELOCATION(R_386_PC16,		21)
1585DEFINE_RELOCATION(R_386_8,		22)
1586DEFINE_RELOCATION(R_386_PC8,		23)
1587DEFINE_RELOCATION(R_386_TLS_GD_32,	24)
1588DEFINE_RELOCATION(R_386_TLS_GD_PUSH,	25)
1589DEFINE_RELOCATION(R_386_TLS_GD_CALL,	26)
1590DEFINE_RELOCATION(R_386_TLS_GD_POP,	27)
1591DEFINE_RELOCATION(R_386_TLS_LDM_32,	28)
1592DEFINE_RELOCATION(R_386_TLS_LDM_PUSH,	29)
1593DEFINE_RELOCATION(R_386_TLS_LDM_CALL,	30)
1594DEFINE_RELOCATION(R_386_TLS_LDM_POP,	31)
1595DEFINE_RELOCATION(R_386_TLS_LDO_32,	32)
1596DEFINE_RELOCATION(R_386_TLS_IE_32,	33)
1597DEFINE_RELOCATION(R_386_TLS_LE_32,	34)
1598DEFINE_RELOCATION(R_386_TLS_DTPMOD32,	35)
1599DEFINE_RELOCATION(R_386_TLS_DTPOFF32,	36)
1600DEFINE_RELOCATION(R_386_TLS_TPOFF32,	37)
1601DEFINE_RELOCATION(R_386_SIZE32,		38)
1602DEFINE_RELOCATION(R_386_TLS_GOTDESC,	39)
1603DEFINE_RELOCATION(R_386_TLS_DESC_CALL,	40)
1604DEFINE_RELOCATION(R_386_TLS_DESC,	41)
1605DEFINE_RELOCATION(R_386_IRELATIVE,	42)
1606DEFINE_RELOCATION(R_386_GOT32X,		43)
1607')
1608
1609define(`DEFINE_AARCH64_RELOCATIONS',`
1610DEFINE_RELOCATION(R_AARCH64_NONE,				0)
1611DEFINE_RELOCATION(R_AARCH64_ABS64,				257)
1612DEFINE_RELOCATION(R_AARCH64_ABS32,				258)
1613DEFINE_RELOCATION(R_AARCH64_ABS16,				259)
1614DEFINE_RELOCATION(R_AARCH64_PREL64,				260)
1615DEFINE_RELOCATION(R_AARCH64_PREL32,				261)
1616DEFINE_RELOCATION(R_AARCH64_PREL16,				262)
1617DEFINE_RELOCATION(R_AARCH64_MOVW_UABS_G0,			263)
1618DEFINE_RELOCATION(R_AARCH64_MOVW_UABS_G0_NC,			264)
1619DEFINE_RELOCATION(R_AARCH64_MOVW_UABS_G1,			265)
1620DEFINE_RELOCATION(R_AARCH64_MOVW_UABS_G1_NC,			266)
1621DEFINE_RELOCATION(R_AARCH64_MOVW_UABS_G2,			267)
1622DEFINE_RELOCATION(R_AARCH64_MOVW_UABS_G2_NC,			268)
1623DEFINE_RELOCATION(R_AARCH64_MOVW_UABS_G3,			269)
1624DEFINE_RELOCATION(R_AARCH64_MOVW_SABS_G0,			270)
1625DEFINE_RELOCATION(R_AARCH64_MOVW_SABS_G1,			271)
1626DEFINE_RELOCATION(R_AARCH64_MOVW_SABS_G2,			272)
1627DEFINE_RELOCATION(R_AARCH64_LD_PREL_LO19,			273)
1628DEFINE_RELOCATION(R_AARCH64_ADR_PREL_LO21,			274)
1629DEFINE_RELOCATION(R_AARCH64_ADR_PREL_PG_HI21,			275)
1630DEFINE_RELOCATION(R_AARCH64_ADR_PREL_PG_HI21_NC,		276)
1631DEFINE_RELOCATION(R_AARCH64_ADD_ABS_LO12_NC,			277)
1632DEFINE_RELOCATION(R_AARCH64_LDST8_ABS_LO12_NC,			278)
1633DEFINE_RELOCATION(R_AARCH64_TSTBR14,				279)
1634DEFINE_RELOCATION(R_AARCH64_CONDBR19,				280)
1635DEFINE_RELOCATION(R_AARCH64_JUMP26,				282)
1636DEFINE_RELOCATION(R_AARCH64_CALL26,				283)
1637DEFINE_RELOCATION(R_AARCH64_LDST16_ABS_LO12_NC,			284)
1638DEFINE_RELOCATION(R_AARCH64_LDST32_ABS_LO12_NC,			285)
1639DEFINE_RELOCATION(R_AARCH64_LDST64_ABS_LO12_NC,			286)
1640DEFINE_RELOCATION(R_AARCH64_MOVW_PREL_G0,			287)
1641DEFINE_RELOCATION(R_AARCH64_MOVW_PREL_G0_NC,			288)
1642DEFINE_RELOCATION(R_AARCH64_MOVW_PREL_G1,			289)
1643DEFINE_RELOCATION(R_AARCH64_MOVW_PREL_G1_NC,			290)
1644DEFINE_RELOCATION(R_AARCH64_MOVW_PREL_G2,			291)
1645DEFINE_RELOCATION(R_AARCH64_MOVW_PREL_G2_NC,			292)
1646DEFINE_RELOCATION(R_AARCH64_MOVW_PREL_G3,			293)
1647DEFINE_RELOCATION(R_AARCH64_LDST128_ABS_LO12_NC,		299)
1648DEFINE_RELOCATION(R_AARCH64_MOVW_GOTOFF_G0,			300)
1649DEFINE_RELOCATION(R_AARCH64_MOVW_GOTOFF_G0_NC,			301)
1650DEFINE_RELOCATION(R_AARCH64_MOVW_GOTOFF_G1,			302)
1651DEFINE_RELOCATION(R_AARCH64_MOVW_GOTOFF_G1_NC,			303)
1652DEFINE_RELOCATION(R_AARCH64_MOVW_GOTOFF_G2,			304)
1653DEFINE_RELOCATION(R_AARCH64_MOVW_GOTOFF_G2_NC,			305)
1654DEFINE_RELOCATION(R_AARCH64_MOVW_GOTOFF_G3,			306)
1655DEFINE_RELOCATION(R_AARCH64_GOTREL64,				307)
1656DEFINE_RELOCATION(R_AARCH64_GOTREL32,				308)
1657DEFINE_RELOCATION(R_AARCH64_GOT_LD_PREL19,			309)
1658DEFINE_RELOCATION(R_AARCH64_LD64_GOTOFF_LO15,			310)
1659DEFINE_RELOCATION(R_AARCH64_ADR_GOT_PAGE,			311)
1660DEFINE_RELOCATION(R_AARCH64_LD64_GOT_LO12_NC,			312)
1661DEFINE_RELOCATION(R_AARCH64_LD64_GOTPAGE_LO15,			313)
1662DEFINE_RELOCATION(R_AARCH64_TLSGD_ADR_PREL21,			512)
1663DEFINE_RELOCATION(R_AARCH64_TLSGD_ADR_PAGE21,			513)
1664DEFINE_RELOCATION(R_AARCH64_TLSGD_ADD_LO12_NC,			514)
1665DEFINE_RELOCATION(R_AARCH64_TLSGD_MOVW_G1,			515)
1666DEFINE_RELOCATION(R_AARCH64_TLSGD_MOVW_G0_NC,			516)
1667DEFINE_RELOCATION(R_AARCH64_TLSLD_ADR_PREL21,			517)
1668DEFINE_RELOCATION(R_AARCH64_TLSLD_ADR_PAGE21,			518)
1669DEFINE_RELOCATION(R_AARCH64_TLSLD_ADD_LO12_NC,			519)
1670DEFINE_RELOCATION(R_AARCH64_TLSLD_MOVW_G1,			520)
1671DEFINE_RELOCATION(R_AARCH64_TLSLD_MOVW_G0_NC,			521)
1672DEFINE_RELOCATION(R_AARCH64_TLSLD_LD_PREL19,			522)
1673DEFINE_RELOCATION(R_AARCH64_TLSLD_MOVW_DTPREL_G2,		523)
1674DEFINE_RELOCATION(R_AARCH64_TLSLD_MOVW_DTPREL_G1,		524)
1675DEFINE_RELOCATION(R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC,		525)
1676DEFINE_RELOCATION(R_AARCH64_TLSLD_MOVW_DTPREL_G0,		526)
1677DEFINE_RELOCATION(R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC,		527)
1678DEFINE_RELOCATION(R_AARCH64_TLSLD_ADD_DTPREL_HI12,		529)
1679DEFINE_RELOCATION(R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC,		530)
1680DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST8_DTPREL_LO12,		531)
1681DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC,		532)
1682DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST16_DTPREL_LO12,		533)
1683DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC,	534)
1684DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST32_DTPREL_LO12,		535)
1685DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC,	536)
1686DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST64_DTPREL_LO12,		537)
1687DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC,	538)
1688DEFINE_RELOCATION(R_AARCH64_TLSIE_MOVW_GOTTPREL_G1,		539)
1689DEFINE_RELOCATION(R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC,		540)
1690DEFINE_RELOCATION(R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21,		541)
1691DEFINE_RELOCATION(R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC,	542)
1692DEFINE_RELOCATION(R_AARCH64_TLSIE_LD_GOTTPREL_PREL19,		543)
1693DEFINE_RELOCATION(R_AARCH64_TLSLE_MOVW_TPREL_G2,		544)
1694DEFINE_RELOCATION(R_AARCH64_TLSLE_MOVW_TPREL_G1,		545)
1695DEFINE_RELOCATION(R_AARCH64_TLSLE_MOVW_TPREL_G1_NC,		546)
1696DEFINE_RELOCATION(R_AARCH64_TLSLE_MOVW_TPREL_G0,		547)
1697DEFINE_RELOCATION(R_AARCH64_TLSLE_MOVW_TPREL_G0_NC,		548)
1698DEFINE_RELOCATION(R_AARCH64_TLSLE_ADD_TPREL_HI12,		549)
1699DEFINE_RELOCATION(R_AARCH64_TLSLE_ADD_TPREL_LO12,		550)
1700DEFINE_RELOCATION(R_AARCH64_TLSLE_ADD_TPREL_LO12_NC,		551)
1701DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST8_TPREL_LO12,		552)
1702DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC,		553)
1703DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST16_TPREL_LO12,		554)
1704DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC,		555)
1705DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST32_TPREL_LO12,		556)
1706DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC,		557)
1707DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST64_TPREL_LO12,		558)
1708DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC,		559)
1709DEFINE_RELOCATION(R_AARCH64_TLSDESC_LD_PREL19,			560)
1710DEFINE_RELOCATION(R_AARCH64_TLSDESC_ADR_PREL21,			561)
1711DEFINE_RELOCATION(R_AARCH64_TLSDESC_ADR_PAGE21,			562)
1712DEFINE_RELOCATION(R_AARCH64_TLSDESC_LD64_LO12,			563)
1713DEFINE_RELOCATION(R_AARCH64_TLSDESC_ADD_LO12,			564)
1714DEFINE_RELOCATION(R_AARCH64_TLSDESC_OFF_G1,			565)
1715DEFINE_RELOCATION(R_AARCH64_TLSDESC_OFF_G0_NC,			566)
1716DEFINE_RELOCATION(R_AARCH64_TLSDESC_LDR,			567)
1717DEFINE_RELOCATION(R_AARCH64_TLSDESC_ADD,			568)
1718DEFINE_RELOCATION(R_AARCH64_TLSDESC_CALL,			569)
1719DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST128_TPREL_LO12,		570)
1720DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC,	571)
1721DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST128_DTPREL_LO12,		572)
1722DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC,	573)
1723DEFINE_RELOCATION(R_AARCH64_COPY,				1024)
1724DEFINE_RELOCATION(R_AARCH64_GLOB_DAT,				1025)
1725DEFINE_RELOCATION(R_AARCH64_JUMP_SLOT,				1026)
1726DEFINE_RELOCATION(R_AARCH64_RELATIVE,				1027)
1727DEFINE_RELOCATION(R_AARCH64_TLS_DTPREL64,			1028)
1728DEFINE_RELOCATION(R_AARCH64_TLS_DTPMOD64,			1029)
1729DEFINE_RELOCATION(R_AARCH64_TLS_TPREL64,			1030)
1730DEFINE_RELOCATION(R_AARCH64_TLSDESC,				1031)
1731DEFINE_RELOCATION(R_AARCH64_IRELATIVE,				1032)
1732')
1733
1734#
1735# These are the symbols used in the Sun ``Linkers and Loaders
1736# Guide'', Document No: 817-1984-17.  See the X86_64 relocations list
1737# below for the spellings used in the ELF specification.
1738#
1739define(`DEFINE_AMD64_RELOCATIONS',`
1740DEFINE_RELOCATION(R_AMD64_NONE,		0)
1741DEFINE_RELOCATION(R_AMD64_64,		1)
1742DEFINE_RELOCATION(R_AMD64_PC32,		2)
1743DEFINE_RELOCATION(R_AMD64_GOT32,	3)
1744DEFINE_RELOCATION(R_AMD64_PLT32,	4)
1745DEFINE_RELOCATION(R_AMD64_COPY,		5)
1746DEFINE_RELOCATION(R_AMD64_GLOB_DAT,	6)
1747DEFINE_RELOCATION(R_AMD64_JUMP_SLOT,	7)
1748DEFINE_RELOCATION(R_AMD64_RELATIVE,	8)
1749DEFINE_RELOCATION(R_AMD64_GOTPCREL,	9)
1750DEFINE_RELOCATION(R_AMD64_32,		10)
1751DEFINE_RELOCATION(R_AMD64_32S,		11)
1752DEFINE_RELOCATION(R_AMD64_16,		12)
1753DEFINE_RELOCATION(R_AMD64_PC16,		13)
1754DEFINE_RELOCATION(R_AMD64_8,		14)
1755DEFINE_RELOCATION(R_AMD64_PC8,		15)
1756DEFINE_RELOCATION(R_AMD64_PC64,		24)
1757DEFINE_RELOCATION(R_AMD64_GOTOFF64,	25)
1758DEFINE_RELOCATION(R_AMD64_GOTPC32,	26)
1759')
1760
1761#
1762# Relocation definitions from the ARM ELF ABI, version "ARM IHI
1763# 0044E" released on 30th November 2012.
1764#
1765define(`DEFINE_ARM_RELOCATIONS',`
1766DEFINE_RELOCATION(R_ARM_NONE,			0)
1767DEFINE_RELOCATION(R_ARM_PC24,			1)
1768DEFINE_RELOCATION(R_ARM_ABS32,			2)
1769DEFINE_RELOCATION(R_ARM_REL32,			3)
1770DEFINE_RELOCATION(R_ARM_LDR_PC_G0,		4)
1771DEFINE_RELOCATION(R_ARM_ABS16,			5)
1772DEFINE_RELOCATION(R_ARM_ABS12,			6)
1773DEFINE_RELOCATION(R_ARM_THM_ABS5,		7)
1774DEFINE_RELOCATION(R_ARM_ABS8,			8)
1775DEFINE_RELOCATION(R_ARM_SBREL32,		9)
1776DEFINE_RELOCATION(R_ARM_THM_CALL,		10)
1777DEFINE_RELOCATION(R_ARM_THM_PC8,		11)
1778DEFINE_RELOCATION(R_ARM_BREL_ADJ,		12)
1779DEFINE_RELOCATION(R_ARM_SWI24,			13)
1780DEFINE_RELOCATION(R_ARM_TLS_DESC,		13)
1781DEFINE_RELOCATION(R_ARM_THM_SWI8,		14)
1782DEFINE_RELOCATION(R_ARM_XPC25,			15)
1783DEFINE_RELOCATION(R_ARM_THM_XPC22,		16)
1784DEFINE_RELOCATION(R_ARM_TLS_DTPMOD32,		17)
1785DEFINE_RELOCATION(R_ARM_TLS_DTPOFF32,		18)
1786DEFINE_RELOCATION(R_ARM_TLS_TPOFF32,		19)
1787DEFINE_RELOCATION(R_ARM_COPY,			20)
1788DEFINE_RELOCATION(R_ARM_GLOB_DAT,		21)
1789DEFINE_RELOCATION(R_ARM_JUMP_SLOT,		22)
1790DEFINE_RELOCATION(R_ARM_RELATIVE,		23)
1791DEFINE_RELOCATION(R_ARM_GOTOFF32,		24)
1792DEFINE_RELOCATION(R_ARM_BASE_PREL,		25)
1793DEFINE_RELOCATION(R_ARM_GOT_BREL,		26)
1794DEFINE_RELOCATION(R_ARM_PLT32,			27)
1795DEFINE_RELOCATION(R_ARM_CALL,			28)
1796DEFINE_RELOCATION(R_ARM_JUMP24,			29)
1797DEFINE_RELOCATION(R_ARM_THM_JUMP24,		30)
1798DEFINE_RELOCATION(R_ARM_BASE_ABS,		31)
1799DEFINE_RELOCATION(R_ARM_ALU_PCREL_7_0,		32)
1800DEFINE_RELOCATION(R_ARM_ALU_PCREL_15_8,		33)
1801DEFINE_RELOCATION(R_ARM_ALU_PCREL_23_15,	34)
1802DEFINE_RELOCATION(R_ARM_LDR_SBREL_11_0_NC,	35)
1803DEFINE_RELOCATION(R_ARM_ALU_SBREL_19_12_NC,	36)
1804DEFINE_RELOCATION(R_ARM_ALU_SBREL_27_20_CK,	37)
1805DEFINE_RELOCATION(R_ARM_TARGET1,		38)
1806DEFINE_RELOCATION(R_ARM_SBREL31,		39)
1807DEFINE_RELOCATION(R_ARM_V4BX,			40)
1808DEFINE_RELOCATION(R_ARM_TARGET2,		41)
1809DEFINE_RELOCATION(R_ARM_PREL31,			42)
1810DEFINE_RELOCATION(R_ARM_MOVW_ABS_NC,		43)
1811DEFINE_RELOCATION(R_ARM_MOVT_ABS,		44)
1812DEFINE_RELOCATION(R_ARM_MOVW_PREL_NC,		45)
1813DEFINE_RELOCATION(R_ARM_MOVT_PREL,		46)
1814DEFINE_RELOCATION(R_ARM_THM_MOVW_ABS_NC,	47)
1815DEFINE_RELOCATION(R_ARM_THM_MOVT_ABS,		48)
1816DEFINE_RELOCATION(R_ARM_THM_MOVW_PREL_NC,	49)
1817DEFINE_RELOCATION(R_ARM_THM_MOVT_PREL,		50)
1818DEFINE_RELOCATION(R_ARM_THM_JUMP19,		51)
1819DEFINE_RELOCATION(R_ARM_THM_JUMP6,		52)
1820DEFINE_RELOCATION(R_ARM_THM_ALU_PREL_11_0,	53)
1821DEFINE_RELOCATION(R_ARM_THM_PC12,		54)
1822DEFINE_RELOCATION(R_ARM_ABS32_NOI,		55)
1823DEFINE_RELOCATION(R_ARM_REL32_NOI,		56)
1824DEFINE_RELOCATION(R_ARM_ALU_PC_G0_NC,		57)
1825DEFINE_RELOCATION(R_ARM_ALU_PC_G0,		58)
1826DEFINE_RELOCATION(R_ARM_ALU_PC_G1_NC,		59)
1827DEFINE_RELOCATION(R_ARM_ALU_PC_G1,		60)
1828DEFINE_RELOCATION(R_ARM_ALU_PC_G2,		61)
1829DEFINE_RELOCATION(R_ARM_LDR_PC_G1,		62)
1830DEFINE_RELOCATION(R_ARM_LDR_PC_G2,		63)
1831DEFINE_RELOCATION(R_ARM_LDRS_PC_G0,		64)
1832DEFINE_RELOCATION(R_ARM_LDRS_PC_G1,		65)
1833DEFINE_RELOCATION(R_ARM_LDRS_PC_G2,		66)
1834DEFINE_RELOCATION(R_ARM_LDC_PC_G0,		67)
1835DEFINE_RELOCATION(R_ARM_LDC_PC_G1,		68)
1836DEFINE_RELOCATION(R_ARM_LDC_PC_G2,		69)
1837DEFINE_RELOCATION(R_ARM_ALU_SB_G0_NC,		70)
1838DEFINE_RELOCATION(R_ARM_ALU_SB_G0,		71)
1839DEFINE_RELOCATION(R_ARM_ALU_SB_G1_NC,		72)
1840DEFINE_RELOCATION(R_ARM_ALU_SB_G1,		73)
1841DEFINE_RELOCATION(R_ARM_ALU_SB_G2,		74)
1842DEFINE_RELOCATION(R_ARM_LDR_SB_G0,		75)
1843DEFINE_RELOCATION(R_ARM_LDR_SB_G1,		76)
1844DEFINE_RELOCATION(R_ARM_LDR_SB_G2,		77)
1845DEFINE_RELOCATION(R_ARM_LDRS_SB_G0,		78)
1846DEFINE_RELOCATION(R_ARM_LDRS_SB_G1,		79)
1847DEFINE_RELOCATION(R_ARM_LDRS_SB_G2,		80)
1848DEFINE_RELOCATION(R_ARM_LDC_SB_G0,		81)
1849DEFINE_RELOCATION(R_ARM_LDC_SB_G1,		82)
1850DEFINE_RELOCATION(R_ARM_LDC_SB_G2,		83)
1851DEFINE_RELOCATION(R_ARM_MOVW_BREL_NC,		84)
1852DEFINE_RELOCATION(R_ARM_MOVT_BREL,		85)
1853DEFINE_RELOCATION(R_ARM_MOVW_BREL,		86)
1854DEFINE_RELOCATION(R_ARM_THM_MOVW_BREL_NC,	87)
1855DEFINE_RELOCATION(R_ARM_THM_MOVT_BREL,		88)
1856DEFINE_RELOCATION(R_ARM_THM_MOVW_BREL,		89)
1857DEFINE_RELOCATION(R_ARM_TLS_GOTDESC,		90)
1858DEFINE_RELOCATION(R_ARM_TLS_CALL,		91)
1859DEFINE_RELOCATION(R_ARM_TLS_DESCSEQ,		92)
1860DEFINE_RELOCATION(R_ARM_THM_TLS_CALL,		93)
1861DEFINE_RELOCATION(R_ARM_PLT32_ABS,		94)
1862DEFINE_RELOCATION(R_ARM_GOT_ABS,		95)
1863DEFINE_RELOCATION(R_ARM_GOT_PREL,		96)
1864DEFINE_RELOCATION(R_ARM_GOT_BREL12,		97)
1865DEFINE_RELOCATION(R_ARM_GOTOFF12,		98)
1866DEFINE_RELOCATION(R_ARM_GOTRELAX,		99)
1867DEFINE_RELOCATION(R_ARM_GNU_VTENTRY,		100)
1868DEFINE_RELOCATION(R_ARM_GNU_VTINHERIT,		101)
1869DEFINE_RELOCATION(R_ARM_THM_JUMP11,		102)
1870DEFINE_RELOCATION(R_ARM_THM_JUMP8,		103)
1871DEFINE_RELOCATION(R_ARM_TLS_GD32,		104)
1872DEFINE_RELOCATION(R_ARM_TLS_LDM32,		105)
1873DEFINE_RELOCATION(R_ARM_TLS_LDO32,		106)
1874DEFINE_RELOCATION(R_ARM_TLS_IE32,		107)
1875DEFINE_RELOCATION(R_ARM_TLS_LE32,		108)
1876DEFINE_RELOCATION(R_ARM_TLS_LDO12,		109)
1877DEFINE_RELOCATION(R_ARM_TLS_LE12,		110)
1878DEFINE_RELOCATION(R_ARM_TLS_IE12GP,		111)
1879DEFINE_RELOCATION(R_ARM_PRIVATE_0,		112)
1880DEFINE_RELOCATION(R_ARM_PRIVATE_1,		113)
1881DEFINE_RELOCATION(R_ARM_PRIVATE_2,		114)
1882DEFINE_RELOCATION(R_ARM_PRIVATE_3,		115)
1883DEFINE_RELOCATION(R_ARM_PRIVATE_4,		116)
1884DEFINE_RELOCATION(R_ARM_PRIVATE_5,		117)
1885DEFINE_RELOCATION(R_ARM_PRIVATE_6,		118)
1886DEFINE_RELOCATION(R_ARM_PRIVATE_7,		119)
1887DEFINE_RELOCATION(R_ARM_PRIVATE_8,		120)
1888DEFINE_RELOCATION(R_ARM_PRIVATE_9,		121)
1889DEFINE_RELOCATION(R_ARM_PRIVATE_10,		122)
1890DEFINE_RELOCATION(R_ARM_PRIVATE_11,		123)
1891DEFINE_RELOCATION(R_ARM_PRIVATE_12,		124)
1892DEFINE_RELOCATION(R_ARM_PRIVATE_13,		125)
1893DEFINE_RELOCATION(R_ARM_PRIVATE_14,		126)
1894DEFINE_RELOCATION(R_ARM_PRIVATE_15,		127)
1895DEFINE_RELOCATION(R_ARM_ME_TOO,			128)
1896DEFINE_RELOCATION(R_ARM_THM_TLS_DESCSEQ16,	129)
1897DEFINE_RELOCATION(R_ARM_THM_TLS_DESCSEQ32,	130)
1898DEFINE_RELOCATION(R_ARM_THM_GOT_BREL12,		131)
1899DEFINE_RELOCATION(R_ARM_IRELATIVE,		140)
1900')
1901
1902define(`DEFINE_IA64_RELOCATIONS',`
1903DEFINE_RELOCATION(R_IA_64_NONE,			0)
1904DEFINE_RELOCATION(R_IA_64_IMM14,		0x21)
1905DEFINE_RELOCATION(R_IA_64_IMM22,		0x22)
1906DEFINE_RELOCATION(R_IA_64_IMM64,		0x23)
1907DEFINE_RELOCATION(R_IA_64_DIR32MSB,		0x24)
1908DEFINE_RELOCATION(R_IA_64_DIR32LSB,		0x25)
1909DEFINE_RELOCATION(R_IA_64_DIR64MSB,		0x26)
1910DEFINE_RELOCATION(R_IA_64_DIR64LSB,		0x27)
1911DEFINE_RELOCATION(R_IA_64_GPREL22,		0x2a)
1912DEFINE_RELOCATION(R_IA_64_GPREL64I,		0x2b)
1913DEFINE_RELOCATION(R_IA_64_GPREL32MSB,		0x2c)
1914DEFINE_RELOCATION(R_IA_64_GPREL32LSB,		0x2d)
1915DEFINE_RELOCATION(R_IA_64_GPREL64MSB,		0x2e)
1916DEFINE_RELOCATION(R_IA_64_GPREL64LSB,		0x2f)
1917DEFINE_RELOCATION(R_IA_64_LTOFF22,		0x32)
1918DEFINE_RELOCATION(R_IA_64_LTOFF64I,		0x33)
1919DEFINE_RELOCATION(R_IA_64_PLTOFF22,		0x3a)
1920DEFINE_RELOCATION(R_IA_64_PLTOFF64I,		0x3b)
1921DEFINE_RELOCATION(R_IA_64_PLTOFF64MSB,		0x3e)
1922DEFINE_RELOCATION(R_IA_64_PLTOFF64LSB,		0x3f)
1923DEFINE_RELOCATION(R_IA_64_FPTR64I,		0x43)
1924DEFINE_RELOCATION(R_IA_64_FPTR32MSB,		0x44)
1925DEFINE_RELOCATION(R_IA_64_FPTR32LSB,		0x45)
1926DEFINE_RELOCATION(R_IA_64_FPTR64MSB,		0x46)
1927DEFINE_RELOCATION(R_IA_64_FPTR64LSB,		0x47)
1928DEFINE_RELOCATION(R_IA_64_PCREL60B,		0x48)
1929DEFINE_RELOCATION(R_IA_64_PCREL21B,		0x49)
1930DEFINE_RELOCATION(R_IA_64_PCREL21M,		0x4a)
1931DEFINE_RELOCATION(R_IA_64_PCREL21F,		0x4b)
1932DEFINE_RELOCATION(R_IA_64_PCREL32MSB,		0x4c)
1933DEFINE_RELOCATION(R_IA_64_PCREL32LSB,		0x4d)
1934DEFINE_RELOCATION(R_IA_64_PCREL64MSB,		0x4e)
1935DEFINE_RELOCATION(R_IA_64_PCREL64LSB,		0x4f)
1936DEFINE_RELOCATION(R_IA_64_LTOFF_FPTR22,		0x52)
1937DEFINE_RELOCATION(R_IA_64_LTOFF_FPTR64I,	0x53)
1938DEFINE_RELOCATION(R_IA_64_LTOFF_FPTR32MSB,	0x54)
1939DEFINE_RELOCATION(R_IA_64_LTOFF_FPTR32LSB,	0x55)
1940DEFINE_RELOCATION(R_IA_64_LTOFF_FPTR64MSB,	0x56)
1941DEFINE_RELOCATION(R_IA_64_LTOFF_FPTR64LSB,	0x57)
1942DEFINE_RELOCATION(R_IA_64_SEGREL32MSB,		0x5c)
1943DEFINE_RELOCATION(R_IA_64_SEGREL32LSB,		0x5d)
1944DEFINE_RELOCATION(R_IA_64_SEGREL64MSB,		0x5e)
1945DEFINE_RELOCATION(R_IA_64_SEGREL64LSB,		0x5f)
1946DEFINE_RELOCATION(R_IA_64_SECREL32MSB,		0x64)
1947DEFINE_RELOCATION(R_IA_64_SECREL32LSB,		0x65)
1948DEFINE_RELOCATION(R_IA_64_SECREL64MSB,		0x66)
1949DEFINE_RELOCATION(R_IA_64_SECREL64LSB,		0x67)
1950DEFINE_RELOCATION(R_IA_64_REL32MSB,		0x6c)
1951DEFINE_RELOCATION(R_IA_64_REL32LSB,		0x6d)
1952DEFINE_RELOCATION(R_IA_64_REL64MSB,		0x6e)
1953DEFINE_RELOCATION(R_IA_64_REL64LSB,		0x6f)
1954DEFINE_RELOCATION(R_IA_64_LTV32MSB,		0x74)
1955DEFINE_RELOCATION(R_IA_64_LTV32LSB,		0x75)
1956DEFINE_RELOCATION(R_IA_64_LTV64MSB,		0x76)
1957DEFINE_RELOCATION(R_IA_64_LTV64LSB,		0x77)
1958DEFINE_RELOCATION(R_IA_64_PCREL21BI,		0x79)
1959DEFINE_RELOCATION(R_IA_64_PCREL22,		0x7A)
1960DEFINE_RELOCATION(R_IA_64_PCREL64I,		0x7B)
1961DEFINE_RELOCATION(R_IA_64_IPLTMSB,		0x80)
1962DEFINE_RELOCATION(R_IA_64_IPLTLSB,		0x81)
1963DEFINE_RELOCATION(R_IA_64_SUB,			0x85)
1964DEFINE_RELOCATION(R_IA_64_LTOFF22X,		0x86)
1965DEFINE_RELOCATION(R_IA_64_LDXMOV,		0x87)
1966DEFINE_RELOCATION(R_IA_64_TPREL14,		0x91)
1967DEFINE_RELOCATION(R_IA_64_TPREL22,		0x92)
1968DEFINE_RELOCATION(R_IA_64_TPREL64I,		0x93)
1969DEFINE_RELOCATION(R_IA_64_TPREL64MSB,		0x96)
1970DEFINE_RELOCATION(R_IA_64_TPREL64LSB,		0x97)
1971DEFINE_RELOCATION(R_IA_64_LTOFF_TPREL22,	0x9A)
1972DEFINE_RELOCATION(R_IA_64_DTPMOD64MSB,		0xA6)
1973DEFINE_RELOCATION(R_IA_64_DTPMOD64LSB,		0xA7)
1974DEFINE_RELOCATION(R_IA_64_LTOFF_DTPMOD22,	0xAA)
1975DEFINE_RELOCATION(R_IA_64_DTPREL14,		0xB1)
1976DEFINE_RELOCATION(R_IA_64_DTPREL22,		0xB2)
1977DEFINE_RELOCATION(R_IA_64_DTPREL64I,		0xB3)
1978DEFINE_RELOCATION(R_IA_64_DTPREL32MSB,		0xB4)
1979DEFINE_RELOCATION(R_IA_64_DTPREL32LSB,		0xB5)
1980DEFINE_RELOCATION(R_IA_64_DTPREL64MSB,		0xB6)
1981DEFINE_RELOCATION(R_IA_64_DTPREL64LSB,		0xB7)
1982DEFINE_RELOCATION(R_IA_64_LTOFF_DTPREL22,	0xBA)
1983')
1984
1985define(`DEFINE_MIPS_RELOCATIONS',`
1986DEFINE_RELOCATION(R_MIPS_NONE,			0)
1987DEFINE_RELOCATION(R_MIPS_16,			1)
1988DEFINE_RELOCATION(R_MIPS_32,			2)
1989DEFINE_RELOCATION(R_MIPS_REL32,			3)
1990DEFINE_RELOCATION(R_MIPS_26,			4)
1991DEFINE_RELOCATION(R_MIPS_HI16,			5)
1992DEFINE_RELOCATION(R_MIPS_LO16,			6)
1993DEFINE_RELOCATION(R_MIPS_GPREL16,		7)
1994DEFINE_RELOCATION(R_MIPS_LITERAL, 		8)
1995DEFINE_RELOCATION(R_MIPS_GOT16,			9)
1996DEFINE_RELOCATION(R_MIPS_PC16,			10)
1997DEFINE_RELOCATION(R_MIPS_CALL16,		11)
1998DEFINE_RELOCATION(R_MIPS_GPREL32,		12)
1999DEFINE_RELOCATION(R_MIPS_SHIFT5,		16)
2000DEFINE_RELOCATION(R_MIPS_SHIFT6,		17)
2001DEFINE_RELOCATION(R_MIPS_64,			18)
2002DEFINE_RELOCATION(R_MIPS_GOT_DISP,		19)
2003DEFINE_RELOCATION(R_MIPS_GOT_PAGE,		20)
2004DEFINE_RELOCATION(R_MIPS_GOT_OFST,		21)
2005DEFINE_RELOCATION(R_MIPS_GOT_HI16,		22)
2006DEFINE_RELOCATION(R_MIPS_GOT_LO16,		23)
2007DEFINE_RELOCATION(R_MIPS_SUB,			24)
2008DEFINE_RELOCATION(R_MIPS_CALLHI16,		30)
2009DEFINE_RELOCATION(R_MIPS_CALLLO16,		31)
2010DEFINE_RELOCATION(R_MIPS_JALR,			37)
2011DEFINE_RELOCATION(R_MIPS_TLS_DTPMOD32,		38)
2012DEFINE_RELOCATION(R_MIPS_TLS_DTPREL32,		39)
2013DEFINE_RELOCATION(R_MIPS_TLS_DTPMOD64,		40)
2014DEFINE_RELOCATION(R_MIPS_TLS_DTPREL64,		41)
2015DEFINE_RELOCATION(R_MIPS_TLS_GD,		42)
2016DEFINE_RELOCATION(R_MIPS_TLS_LDM,		43)
2017DEFINE_RELOCATION(R_MIPS_TLS_DTPREL_HI16,	44)
2018DEFINE_RELOCATION(R_MIPS_TLS_DTPREL_LO16,	45)
2019DEFINE_RELOCATION(R_MIPS_TLS_GOTTPREL,		46)
2020DEFINE_RELOCATION(R_MIPS_TLS_TPREL32,		47)
2021DEFINE_RELOCATION(R_MIPS_TLS_TPREL64,		48)
2022DEFINE_RELOCATION(R_MIPS_TLS_TPREL_HI16,	49)
2023DEFINE_RELOCATION(R_MIPS_TLS_TPREL_LO16,	50)
2024')
2025
2026define(`DEFINE_PPC32_RELOCATIONS',`
2027DEFINE_RELOCATION(R_PPC_NONE,		0)
2028DEFINE_RELOCATION(R_PPC_ADDR32,		1)
2029DEFINE_RELOCATION(R_PPC_ADDR24,		2)
2030DEFINE_RELOCATION(R_PPC_ADDR16,		3)
2031DEFINE_RELOCATION(R_PPC_ADDR16_LO,	4)
2032DEFINE_RELOCATION(R_PPC_ADDR16_HI,	5)
2033DEFINE_RELOCATION(R_PPC_ADDR16_HA,	6)
2034DEFINE_RELOCATION(R_PPC_ADDR14,		7)
2035DEFINE_RELOCATION(R_PPC_ADDR14_BRTAKEN,	8)
2036DEFINE_RELOCATION(R_PPC_ADDR14_BRNTAKEN, 9)
2037DEFINE_RELOCATION(R_PPC_REL24,		10)
2038DEFINE_RELOCATION(R_PPC_REL14,		11)
2039DEFINE_RELOCATION(R_PPC_REL14_BRTAKEN,	12)
2040DEFINE_RELOCATION(R_PPC_REL14_BRNTAKEN,	13)
2041DEFINE_RELOCATION(R_PPC_GOT16,		14)
2042DEFINE_RELOCATION(R_PPC_GOT16_LO,	15)
2043DEFINE_RELOCATION(R_PPC_GOT16_HI,	16)
2044DEFINE_RELOCATION(R_PPC_GOT16_HA,	17)
2045DEFINE_RELOCATION(R_PPC_PLTREL24,	18)
2046DEFINE_RELOCATION(R_PPC_COPY,		19)
2047DEFINE_RELOCATION(R_PPC_GLOB_DAT,	20)
2048DEFINE_RELOCATION(R_PPC_JMP_SLOT,	21)
2049DEFINE_RELOCATION(R_PPC_RELATIVE,	22)
2050DEFINE_RELOCATION(R_PPC_LOCAL24PC,	23)
2051DEFINE_RELOCATION(R_PPC_UADDR32,	24)
2052DEFINE_RELOCATION(R_PPC_UADDR16,	25)
2053DEFINE_RELOCATION(R_PPC_REL32,		26)
2054DEFINE_RELOCATION(R_PPC_PLT32,		27)
2055DEFINE_RELOCATION(R_PPC_PLTREL32,	28)
2056DEFINE_RELOCATION(R_PPC_PLT16_LO,	29)
2057DEFINE_RELOCATION(R_PPC_PLT16_HI,	30)
2058DEFINE_RELOCATION(R_PPC_PLT16_HA,	31)
2059DEFINE_RELOCATION(R_PPC_SDAREL16,	32)
2060DEFINE_RELOCATION(R_PPC_SECTOFF,	33)
2061DEFINE_RELOCATION(R_PPC_SECTOFF_LO,	34)
2062DEFINE_RELOCATION(R_PPC_SECTOFF_HI,	35)
2063DEFINE_RELOCATION(R_PPC_SECTOFF_HA,	36)
2064DEFINE_RELOCATION(R_PPC_ADDR30,		37)
2065DEFINE_RELOCATION(R_PPC_TLS,		67)
2066DEFINE_RELOCATION(R_PPC_DTPMOD32,	68)
2067DEFINE_RELOCATION(R_PPC_TPREL16,	69)
2068DEFINE_RELOCATION(R_PPC_TPREL16_LO,	70)
2069DEFINE_RELOCATION(R_PPC_TPREL16_HI,	71)
2070DEFINE_RELOCATION(R_PPC_TPREL16_HA,	72)
2071DEFINE_RELOCATION(R_PPC_TPREL32,	73)
2072DEFINE_RELOCATION(R_PPC_DTPREL16,	74)
2073DEFINE_RELOCATION(R_PPC_DTPREL16_LO,	75)
2074DEFINE_RELOCATION(R_PPC_DTPREL16_HI,	76)
2075DEFINE_RELOCATION(R_PPC_DTPREL16_HA,	77)
2076DEFINE_RELOCATION(R_PPC_DTPREL32,	78)
2077DEFINE_RELOCATION(R_PPC_GOT_TLSGD16,	79)
2078DEFINE_RELOCATION(R_PPC_GOT_TLSGD16_LO,	80)
2079DEFINE_RELOCATION(R_PPC_GOT_TLSGD16_HI,	81)
2080DEFINE_RELOCATION(R_PPC_GOT_TLSGD16_HA,	82)
2081DEFINE_RELOCATION(R_PPC_GOT_TLSLD16,	83)
2082DEFINE_RELOCATION(R_PPC_GOT_TLSLD16_LO,	84)
2083DEFINE_RELOCATION(R_PPC_GOT_TLSLD16_HI,	85)
2084DEFINE_RELOCATION(R_PPC_GOT_TLSLD16_HA,	86)
2085DEFINE_RELOCATION(R_PPC_GOT_TPREL16,	87)
2086DEFINE_RELOCATION(R_PPC_GOT_TPREL16_LO,	88)
2087DEFINE_RELOCATION(R_PPC_GOT_TPREL16_HI,	89)
2088DEFINE_RELOCATION(R_PPC_GOT_TPREL16_HA,	90)
2089DEFINE_RELOCATION(R_PPC_GOT_DTPREL16,	91)
2090DEFINE_RELOCATION(R_PPC_GOT_DTPREL16_LO, 92)
2091DEFINE_RELOCATION(R_PPC_GOT_DTPREL16_HI, 93)
2092DEFINE_RELOCATION(R_PPC_GOT_DTPREL16_HA, 94)
2093DEFINE_RELOCATION(R_PPC_TLSGD,		95)
2094DEFINE_RELOCATION(R_PPC_TLSLD,		96)
2095DEFINE_RELOCATION(R_PPC_EMB_NADDR32,	101)
2096DEFINE_RELOCATION(R_PPC_EMB_NADDR16,	102)
2097DEFINE_RELOCATION(R_PPC_EMB_NADDR16_LO,	103)
2098DEFINE_RELOCATION(R_PPC_EMB_NADDR16_HI,	104)
2099DEFINE_RELOCATION(R_PPC_EMB_NADDR16_HA,	105)
2100DEFINE_RELOCATION(R_PPC_EMB_SDAI16,	106)
2101DEFINE_RELOCATION(R_PPC_EMB_SDA2I16,	107)
2102DEFINE_RELOCATION(R_PPC_EMB_SDA2REL,	108)
2103DEFINE_RELOCATION(R_PPC_EMB_SDA21,	109)
2104DEFINE_RELOCATION(R_PPC_EMB_MRKREF,	110)
2105DEFINE_RELOCATION(R_PPC_EMB_RELSEC16,	111)
2106DEFINE_RELOCATION(R_PPC_EMB_RELST_LO,	112)
2107DEFINE_RELOCATION(R_PPC_EMB_RELST_HI,	113)
2108DEFINE_RELOCATION(R_PPC_EMB_RELST_HA,	114)
2109DEFINE_RELOCATION(R_PPC_EMB_BIT_FLD,	115)
2110DEFINE_RELOCATION(R_PPC_EMB_RELSDA,	116)
2111')
2112
2113define(`DEFINE_PPC64_RELOCATIONS',`
2114DEFINE_RELOCATION(R_PPC64_NONE,			0)
2115DEFINE_RELOCATION(R_PPC64_ADDR32,		1)
2116DEFINE_RELOCATION(R_PPC64_ADDR24,		2)
2117DEFINE_RELOCATION(R_PPC64_ADDR16,		3)
2118DEFINE_RELOCATION(R_PPC64_ADDR16_LO,		4)
2119DEFINE_RELOCATION(R_PPC64_ADDR16_HI,		5)
2120DEFINE_RELOCATION(R_PPC64_ADDR16_HA,		6)
2121DEFINE_RELOCATION(R_PPC64_ADDR14,		7)
2122DEFINE_RELOCATION(R_PPC64_ADDR14_BRTAKEN,	8)
2123DEFINE_RELOCATION(R_PPC64_ADDR14_BRNTAKEN,	9)
2124DEFINE_RELOCATION(R_PPC64_REL24,		10)
2125DEFINE_RELOCATION(R_PPC64_REL14,		11)
2126DEFINE_RELOCATION(R_PPC64_REL14_BRTAKEN,	12)
2127DEFINE_RELOCATION(R_PPC64_REL14_BRNTAKEN,	13)
2128DEFINE_RELOCATION(R_PPC64_GOT16,		14)
2129DEFINE_RELOCATION(R_PPC64_GOT16_LO,		15)
2130DEFINE_RELOCATION(R_PPC64_GOT16_HI,		16)
2131DEFINE_RELOCATION(R_PPC64_GOT16_HA,		17)
2132DEFINE_RELOCATION(R_PPC64_COPY,			19)
2133DEFINE_RELOCATION(R_PPC64_GLOB_DAT,		20)
2134DEFINE_RELOCATION(R_PPC64_JMP_SLOT,		21)
2135DEFINE_RELOCATION(R_PPC64_RELATIVE,		22)
2136DEFINE_RELOCATION(R_PPC64_UADDR32,		24)
2137DEFINE_RELOCATION(R_PPC64_UADDR16,		25)
2138DEFINE_RELOCATION(R_PPC64_REL32,		26)
2139DEFINE_RELOCATION(R_PPC64_PLT32,		27)
2140DEFINE_RELOCATION(R_PPC64_PLTREL32,		28)
2141DEFINE_RELOCATION(R_PPC64_PLT16_LO,		29)
2142DEFINE_RELOCATION(R_PPC64_PLT16_HI,		30)
2143DEFINE_RELOCATION(R_PPC64_PLT16_HA,		31)
2144DEFINE_RELOCATION(R_PPC64_SECTOFF,		33)
2145DEFINE_RELOCATION(R_PPC64_SECTOFF_LO,		34)
2146DEFINE_RELOCATION(R_PPC64_SECTOFF_HI,		35)
2147DEFINE_RELOCATION(R_PPC64_SECTOFF_HA,		36)
2148DEFINE_RELOCATION(R_PPC64_ADDR30,		37)
2149DEFINE_RELOCATION(R_PPC64_ADDR64,		38)
2150DEFINE_RELOCATION(R_PPC64_ADDR16_HIGHER,	39)
2151DEFINE_RELOCATION(R_PPC64_ADDR16_HIGHERA,	40)
2152DEFINE_RELOCATION(R_PPC64_ADDR16_HIGHEST,	41)
2153DEFINE_RELOCATION(R_PPC64_ADDR16_HIGHESTA,	42)
2154DEFINE_RELOCATION(R_PPC64_UADDR64,		43)
2155DEFINE_RELOCATION(R_PPC64_REL64,		44)
2156DEFINE_RELOCATION(R_PPC64_PLT64,		45)
2157DEFINE_RELOCATION(R_PPC64_PLTREL64,		46)
2158DEFINE_RELOCATION(R_PPC64_TOC16,		47)
2159DEFINE_RELOCATION(R_PPC64_TOC16_LO,		48)
2160DEFINE_RELOCATION(R_PPC64_TOC16_HI,		49)
2161DEFINE_RELOCATION(R_PPC64_TOC16_HA,		50)
2162DEFINE_RELOCATION(R_PPC64_TOC,			51)
2163DEFINE_RELOCATION(R_PPC64_PLTGOT16,		52)
2164DEFINE_RELOCATION(R_PPC64_PLTGOT16_LO,		53)
2165DEFINE_RELOCATION(R_PPC64_PLTGOT16_HI,		54)
2166DEFINE_RELOCATION(R_PPC64_PLTGOT16_HA,		55)
2167DEFINE_RELOCATION(R_PPC64_ADDR16_DS,		56)
2168DEFINE_RELOCATION(R_PPC64_ADDR16_LO_DS,		57)
2169DEFINE_RELOCATION(R_PPC64_GOT16_DS,		58)
2170DEFINE_RELOCATION(R_PPC64_GOT16_LO_DS,		59)
2171DEFINE_RELOCATION(R_PPC64_PLT16_LO_DS,		60)
2172DEFINE_RELOCATION(R_PPC64_SECTOFF_DS,		61)
2173DEFINE_RELOCATION(R_PPC64_SECTOFF_LO_DS,	62)
2174DEFINE_RELOCATION(R_PPC64_TOC16_DS,		63)
2175DEFINE_RELOCATION(R_PPC64_TOC16_LO_DS,		64)
2176DEFINE_RELOCATION(R_PPC64_PLTGOT16_DS,		65)
2177DEFINE_RELOCATION(R_PPC64_PLTGOT16_LO_DS,	66)
2178DEFINE_RELOCATION(R_PPC64_TLS,			67)
2179DEFINE_RELOCATION(R_PPC64_DTPMOD64,		68)
2180DEFINE_RELOCATION(R_PPC64_TPREL16,		69)
2181DEFINE_RELOCATION(R_PPC64_TPREL16_LO,		60)
2182DEFINE_RELOCATION(R_PPC64_TPREL16_HI,		71)
2183DEFINE_RELOCATION(R_PPC64_TPREL16_HA,		72)
2184DEFINE_RELOCATION(R_PPC64_TPREL64,		73)
2185DEFINE_RELOCATION(R_PPC64_DTPREL16,		74)
2186DEFINE_RELOCATION(R_PPC64_DTPREL16_LO,		75)
2187DEFINE_RELOCATION(R_PPC64_DTPREL16_HI,		76)
2188DEFINE_RELOCATION(R_PPC64_DTPREL16_HA,		77)
2189DEFINE_RELOCATION(R_PPC64_DTPREL64,		78)
2190DEFINE_RELOCATION(R_PPC64_GOT_TLSGD16,		79)
2191DEFINE_RELOCATION(R_PPC64_GOT_TLSGD16_LO,	80)
2192DEFINE_RELOCATION(R_PPC64_GOT_TLSGD16_HI,	81)
2193DEFINE_RELOCATION(R_PPC64_GOT_TLSGD16_HA,	82)
2194DEFINE_RELOCATION(R_PPC64_GOT_TLSLD16,		83)
2195DEFINE_RELOCATION(R_PPC64_GOT_TLSLD16_LO,	84)
2196DEFINE_RELOCATION(R_PPC64_GOT_TLSLD16_HI,	85)
2197DEFINE_RELOCATION(R_PPC64_GOT_TLSLD16_HA,	86)
2198DEFINE_RELOCATION(R_PPC64_GOT_TPREL16_DS,	87)
2199DEFINE_RELOCATION(R_PPC64_GOT_TPREL16_LO_DS,	88)
2200DEFINE_RELOCATION(R_PPC64_GOT_TPREL16_HI,	89)
2201DEFINE_RELOCATION(R_PPC64_GOT_TPREL16_HA,	90)
2202DEFINE_RELOCATION(R_PPC64_GOT_DTPREL16_DS,	91)
2203DEFINE_RELOCATION(R_PPC64_GOT_DTPREL16_LO_DS,	92)
2204DEFINE_RELOCATION(R_PPC64_GOT_DTPREL16_HI,	93)
2205DEFINE_RELOCATION(R_PPC64_GOT_DTPREL16_HA,	94)
2206DEFINE_RELOCATION(R_PPC64_TPREL16_DS,		95)
2207DEFINE_RELOCATION(R_PPC64_TPREL16_LO_DS,	96)
2208DEFINE_RELOCATION(R_PPC64_TPREL16_HIGHER,	97)
2209DEFINE_RELOCATION(R_PPC64_TPREL16_HIGHERA,	98)
2210DEFINE_RELOCATION(R_PPC64_TPREL16_HIGHEST,	99)
2211DEFINE_RELOCATION(R_PPC64_TPREL16_HIGHESTA,	100)
2212DEFINE_RELOCATION(R_PPC64_DTPREL16_DS,		101)
2213DEFINE_RELOCATION(R_PPC64_DTPREL16_LO_DS,	102)
2214DEFINE_RELOCATION(R_PPC64_DTPREL16_HIGHER,	103)
2215DEFINE_RELOCATION(R_PPC64_DTPREL16_HIGHERA,	104)
2216DEFINE_RELOCATION(R_PPC64_DTPREL16_HIGHEST,	105)
2217DEFINE_RELOCATION(R_PPC64_DTPREL16_HIGHESTA,	106)
2218DEFINE_RELOCATION(R_PPC64_TLSGD,		107)
2219DEFINE_RELOCATION(R_PPC64_TLSLD,		108)
2220')
2221
2222define(`DEFINE_RISCV_RELOCATIONS',`
2223DEFINE_RELOCATION(R_RISCV_NONE,			0)
2224DEFINE_RELOCATION(R_RISCV_32,			1)
2225DEFINE_RELOCATION(R_RISCV_64,			2)
2226DEFINE_RELOCATION(R_RISCV_RELATIVE,		3)
2227DEFINE_RELOCATION(R_RISCV_COPY,			4)
2228DEFINE_RELOCATION(R_RISCV_JUMP_SLOT,		5)
2229DEFINE_RELOCATION(R_RISCV_TLS_DTPMOD32,		6)
2230DEFINE_RELOCATION(R_RISCV_TLS_DTPMOD64,		7)
2231DEFINE_RELOCATION(R_RISCV_TLS_DTPREL32,		8)
2232DEFINE_RELOCATION(R_RISCV_TLS_DTPREL64,		9)
2233DEFINE_RELOCATION(R_RISCV_TLS_TPREL32,		10)
2234DEFINE_RELOCATION(R_RISCV_TLS_TPREL64,		11)
2235DEFINE_RELOCATION(R_RISCV_BRANCH,		16)
2236DEFINE_RELOCATION(R_RISCV_JAL,			17)
2237DEFINE_RELOCATION(R_RISCV_CALL,			18)
2238DEFINE_RELOCATION(R_RISCV_CALL_PLT,		19)
2239DEFINE_RELOCATION(R_RISCV_GOT_HI20,		20)
2240DEFINE_RELOCATION(R_RISCV_TLS_GOT_HI20,		21)
2241DEFINE_RELOCATION(R_RISCV_TLS_GD_HI20,		22)
2242DEFINE_RELOCATION(R_RISCV_PCREL_HI20,		23)
2243DEFINE_RELOCATION(R_RISCV_PCREL_LO12_I,		24)
2244DEFINE_RELOCATION(R_RISCV_PCREL_LO12_S,		25)
2245DEFINE_RELOCATION(R_RISCV_HI20,			26)
2246DEFINE_RELOCATION(R_RISCV_LO12_I,		27)
2247DEFINE_RELOCATION(R_RISCV_LO12_S,		28)
2248DEFINE_RELOCATION(R_RISCV_TPREL_HI20,		29)
2249DEFINE_RELOCATION(R_RISCV_TPREL_LO12_I,		30)
2250DEFINE_RELOCATION(R_RISCV_TPREL_LO12_S,		31)
2251DEFINE_RELOCATION(R_RISCV_TPREL_ADD,		32)
2252DEFINE_RELOCATION(R_RISCV_ADD8,			33)
2253DEFINE_RELOCATION(R_RISCV_ADD16,		34)
2254DEFINE_RELOCATION(R_RISCV_ADD32,		35)
2255DEFINE_RELOCATION(R_RISCV_ADD64,		36)
2256DEFINE_RELOCATION(R_RISCV_SUB8,			37)
2257DEFINE_RELOCATION(R_RISCV_SUB16,		38)
2258DEFINE_RELOCATION(R_RISCV_SUB32,		39)
2259DEFINE_RELOCATION(R_RISCV_SUB64,		40)
2260DEFINE_RELOCATION(R_RISCV_GNU_VTINHERIT,	41)
2261DEFINE_RELOCATION(R_RISCV_GNU_VTENTRY,		42)
2262DEFINE_RELOCATION(R_RISCV_ALIGN,		43)
2263DEFINE_RELOCATION(R_RISCV_RVC_BRANCH,		44)
2264DEFINE_RELOCATION(R_RISCV_RVC_JUMP,		45)
2265DEFINE_RELOCATION(R_RISCV_RVC_LUI,		46)
2266DEFINE_RELOCATION(R_RISCV_GPREL_I,		47)
2267DEFINE_RELOCATION(R_RISCV_GPREL_S,		48)
2268DEFINE_RELOCATION(R_RISCV_TPREL_I,		49)
2269DEFINE_RELOCATION(R_RISCV_TPREL_S,		50)
2270DEFINE_RELOCATION(R_RISCV_RELAX,		51)
2271DEFINE_RELOCATION(R_RISCV_SUB6,			52)
2272DEFINE_RELOCATION(R_RISCV_SET6,			53)
2273DEFINE_RELOCATION(R_RISCV_SET8,			54)
2274DEFINE_RELOCATION(R_RISCV_SET16,		55)
2275DEFINE_RELOCATION(R_RISCV_SET32,		56)
2276DEFINE_RELOCATION(R_RISCV_32_PCREL,		57)
2277DEFINE_RELOCATION(R_RISCV_IRELATIVE,		58)
2278')
2279
2280define(`DEFINE_SPARC_RELOCATIONS',`
2281DEFINE_RELOCATION(R_SPARC_NONE,		0)
2282DEFINE_RELOCATION(R_SPARC_8,		1)
2283DEFINE_RELOCATION(R_SPARC_16,		2)
2284DEFINE_RELOCATION(R_SPARC_32, 		3)
2285DEFINE_RELOCATION(R_SPARC_DISP8,	4)
2286DEFINE_RELOCATION(R_SPARC_DISP16,	5)
2287DEFINE_RELOCATION(R_SPARC_DISP32,	6)
2288DEFINE_RELOCATION(R_SPARC_WDISP30,	7)
2289DEFINE_RELOCATION(R_SPARC_WDISP22,	8)
2290DEFINE_RELOCATION(R_SPARC_HI22,		9)
2291DEFINE_RELOCATION(R_SPARC_22,		10)
2292DEFINE_RELOCATION(R_SPARC_13,		11)
2293DEFINE_RELOCATION(R_SPARC_LO10,		12)
2294DEFINE_RELOCATION(R_SPARC_GOT10,	13)
2295DEFINE_RELOCATION(R_SPARC_GOT13,	14)
2296DEFINE_RELOCATION(R_SPARC_GOT22,	15)
2297DEFINE_RELOCATION(R_SPARC_PC10,		16)
2298DEFINE_RELOCATION(R_SPARC_PC22,		17)
2299DEFINE_RELOCATION(R_SPARC_WPLT30,	18)
2300DEFINE_RELOCATION(R_SPARC_COPY,		19)
2301DEFINE_RELOCATION(R_SPARC_GLOB_DAT,	20)
2302DEFINE_RELOCATION(R_SPARC_JMP_SLOT,	21)
2303DEFINE_RELOCATION(R_SPARC_RELATIVE,	22)
2304DEFINE_RELOCATION(R_SPARC_UA32,		23)
2305DEFINE_RELOCATION(R_SPARC_PLT32,	24)
2306DEFINE_RELOCATION(R_SPARC_HIPLT22,	25)
2307DEFINE_RELOCATION(R_SPARC_LOPLT10,	26)
2308DEFINE_RELOCATION(R_SPARC_PCPLT32,	27)
2309DEFINE_RELOCATION(R_SPARC_PCPLT22,	28)
2310DEFINE_RELOCATION(R_SPARC_PCPLT10,	29)
2311DEFINE_RELOCATION(R_SPARC_10,		30)
2312DEFINE_RELOCATION(R_SPARC_11,		31)
2313DEFINE_RELOCATION(R_SPARC_64,		32)
2314DEFINE_RELOCATION(R_SPARC_OLO10,	33)
2315DEFINE_RELOCATION(R_SPARC_HH22,		34)
2316DEFINE_RELOCATION(R_SPARC_HM10,		35)
2317DEFINE_RELOCATION(R_SPARC_LM22,		36)
2318DEFINE_RELOCATION(R_SPARC_PC_HH22,	37)
2319DEFINE_RELOCATION(R_SPARC_PC_HM10,	38)
2320DEFINE_RELOCATION(R_SPARC_PC_LM22,	39)
2321DEFINE_RELOCATION(R_SPARC_WDISP16,	40)
2322DEFINE_RELOCATION(R_SPARC_WDISP19,	41)
2323DEFINE_RELOCATION(R_SPARC_GLOB_JMP,	42)
2324DEFINE_RELOCATION(R_SPARC_7,		43)
2325DEFINE_RELOCATION(R_SPARC_5,		44)
2326DEFINE_RELOCATION(R_SPARC_6,		45)
2327DEFINE_RELOCATION(R_SPARC_DISP64,	46)
2328DEFINE_RELOCATION(R_SPARC_PLT64,	47)
2329DEFINE_RELOCATION(R_SPARC_HIX22,	48)
2330DEFINE_RELOCATION(R_SPARC_LOX10,	49)
2331DEFINE_RELOCATION(R_SPARC_H44,		50)
2332DEFINE_RELOCATION(R_SPARC_M44,		51)
2333DEFINE_RELOCATION(R_SPARC_L44,		52)
2334DEFINE_RELOCATION(R_SPARC_REGISTER,	53)
2335DEFINE_RELOCATION(R_SPARC_UA64,		54)
2336DEFINE_RELOCATION(R_SPARC_UA16,		55)
2337DEFINE_RELOCATION(R_SPARC_TLS_GD_HI22,	56)
2338DEFINE_RELOCATION(R_SPARC_TLS_GD_LO10,	57)
2339DEFINE_RELOCATION(R_SPARC_TLS_GD_ADD,	58)
2340DEFINE_RELOCATION(R_SPARC_TLS_GD_CALL,	59)
2341DEFINE_RELOCATION(R_SPARC_TLS_LDM_HI22,	60)
2342DEFINE_RELOCATION(R_SPARC_TLS_LDM_LO10,	61)
2343DEFINE_RELOCATION(R_SPARC_TLS_LDM_ADD,	62)
2344DEFINE_RELOCATION(R_SPARC_TLS_LDM_CALL,	63)
2345DEFINE_RELOCATION(R_SPARC_TLS_LDO_HIX22, 64)
2346DEFINE_RELOCATION(R_SPARC_TLS_LDO_LOX10, 65)
2347DEFINE_RELOCATION(R_SPARC_TLS_LDO_ADD,	66)
2348DEFINE_RELOCATION(R_SPARC_TLS_IE_HI22,	67)
2349DEFINE_RELOCATION(R_SPARC_TLS_IE_LO10,	68)
2350DEFINE_RELOCATION(R_SPARC_TLS_IE_LD,	69)
2351DEFINE_RELOCATION(R_SPARC_TLS_IE_LDX,	70)
2352DEFINE_RELOCATION(R_SPARC_TLS_IE_ADD,	71)
2353DEFINE_RELOCATION(R_SPARC_TLS_LE_HIX22,	72)
2354DEFINE_RELOCATION(R_SPARC_TLS_LE_LOX10,	73)
2355DEFINE_RELOCATION(R_SPARC_TLS_DTPMOD32,	74)
2356DEFINE_RELOCATION(R_SPARC_TLS_DTPMOD64,	75)
2357DEFINE_RELOCATION(R_SPARC_TLS_DTPOFF32,	76)
2358DEFINE_RELOCATION(R_SPARC_TLS_DTPOFF64,	77)
2359DEFINE_RELOCATION(R_SPARC_TLS_TPOFF32,	78)
2360DEFINE_RELOCATION(R_SPARC_TLS_TPOFF64,	79)
2361DEFINE_RELOCATION(R_SPARC_GOTDATA_HIX22, 80)
2362DEFINE_RELOCATION(R_SPARC_GOTDATA_LOX10, 81)
2363DEFINE_RELOCATION(R_SPARC_GOTDATA_OP_HIX22, 82)
2364DEFINE_RELOCATION(R_SPARC_GOTDATA_OP_LOX10, 83)
2365DEFINE_RELOCATION(R_SPARC_GOTDATA_OP,	84)
2366DEFINE_RELOCATION(R_SPARC_H34,		85)
2367')
2368
2369define(`DEFINE_X86_64_RELOCATIONS',`
2370DEFINE_RELOCATION(R_X86_64_NONE,	0)
2371DEFINE_RELOCATION(R_X86_64_64,		1)
2372DEFINE_RELOCATION(R_X86_64_PC32,	2)
2373DEFINE_RELOCATION(R_X86_64_GOT32,	3)
2374DEFINE_RELOCATION(R_X86_64_PLT32,	4)
2375DEFINE_RELOCATION(R_X86_64_COPY,	5)
2376DEFINE_RELOCATION(R_X86_64_GLOB_DAT,	6)
2377DEFINE_RELOCATION(R_X86_64_JUMP_SLOT,	7)
2378DEFINE_RELOCATION(R_X86_64_RELATIVE,	8)
2379DEFINE_RELOCATION(R_X86_64_GOTPCREL,	9)
2380DEFINE_RELOCATION(R_X86_64_32,		10)
2381DEFINE_RELOCATION(R_X86_64_32S,		11)
2382DEFINE_RELOCATION(R_X86_64_16,		12)
2383DEFINE_RELOCATION(R_X86_64_PC16,	13)
2384DEFINE_RELOCATION(R_X86_64_8,		14)
2385DEFINE_RELOCATION(R_X86_64_PC8,		15)
2386DEFINE_RELOCATION(R_X86_64_DTPMOD64,	16)
2387DEFINE_RELOCATION(R_X86_64_DTPOFF64,	17)
2388DEFINE_RELOCATION(R_X86_64_TPOFF64,	18)
2389DEFINE_RELOCATION(R_X86_64_TLSGD,	19)
2390DEFINE_RELOCATION(R_X86_64_TLSLD,	20)
2391DEFINE_RELOCATION(R_X86_64_DTPOFF32,	21)
2392DEFINE_RELOCATION(R_X86_64_GOTTPOFF,	22)
2393DEFINE_RELOCATION(R_X86_64_TPOFF32,	23)
2394DEFINE_RELOCATION(R_X86_64_PC64,	24)
2395DEFINE_RELOCATION(R_X86_64_GOTOFF64,	25)
2396DEFINE_RELOCATION(R_X86_64_GOTPC32,	26)
2397DEFINE_RELOCATION(R_X86_64_GOT64,	27)
2398DEFINE_RELOCATION(R_X86_64_GOTPCREL64,	28)
2399DEFINE_RELOCATION(R_X86_64_GOTPC64,	29)
2400DEFINE_RELOCATION(R_X86_64_GOTPLT64,	30)
2401DEFINE_RELOCATION(R_X86_64_PLTOFF64,	31)
2402DEFINE_RELOCATION(R_X86_64_SIZE32,	32)
2403DEFINE_RELOCATION(R_X86_64_SIZE64,	33)
2404DEFINE_RELOCATION(R_X86_64_GOTPC32_TLSDESC, 34)
2405DEFINE_RELOCATION(R_X86_64_TLSDESC_CALL, 35)
2406DEFINE_RELOCATION(R_X86_64_TLSDESC,	36)
2407DEFINE_RELOCATION(R_X86_64_IRELATIVE,	37)
2408DEFINE_RELOCATION(R_X86_64_RELATIVE64,	38)
2409DEFINE_RELOCATION(R_X86_64_GOTPCRELX,	41)
2410DEFINE_RELOCATION(R_X86_64_REX_GOTPCRELX, 42)
2411')
2412
2413define(`DEFINE_RELOCATIONS',`
2414DEFINE_386_RELOCATIONS()
2415DEFINE_AARCH64_RELOCATIONS()
2416DEFINE_AMD64_RELOCATIONS()
2417DEFINE_ARM_RELOCATIONS()
2418DEFINE_IA64_RELOCATIONS()
2419DEFINE_MIPS_RELOCATIONS()
2420DEFINE_PPC32_RELOCATIONS()
2421DEFINE_PPC64_RELOCATIONS()
2422DEFINE_RISCV_RELOCATIONS()
2423DEFINE_SPARC_RELOCATIONS()
2424DEFINE_X86_64_RELOCATIONS()
2425')
2426
2427define(`DEFINE_LL_FLAGS',`
2428DEFINE_LL_FLAG(LL_NONE,			0,
2429	`no flags')
2430DEFINE_LL_FLAG(LL_EXACT_MATCH,		0x1,
2431	`require an exact match')
2432DEFINE_LL_FLAG(LL_IGNORE_INT_VER,	0x2,
2433	`ignore version incompatibilities')
2434DEFINE_LL_FLAG(LL_REQUIRE_MINOR,	0x4,
2435	`')
2436DEFINE_LL_FLAG(LL_EXPORTS,		0x8,
2437	`')
2438DEFINE_LL_FLAG(LL_DELAY_LOAD,		0x10,
2439	`')
2440DEFINE_LL_FLAG(LL_DELTA,		0x20,
2441	`')
2442')
2443
2444#
2445# Note tags
2446#
2447define(`DEFINE_NOTE_ENTRY_TYPES',`
2448DEFINE_NOTE_ENTRY(NT_ABI_TAG,			1,
2449	`Tag indicating the ABI')
2450DEFINE_NOTE_ENTRY(NT_GNU_HWCAP,			2,
2451	`Hardware capabilities')
2452DEFINE_NOTE_ENTRY(NT_GNU_BUILD_ID,		3,
2453	`Build id, set by ld(1)')
2454DEFINE_NOTE_ENTRY(NT_GNU_GOLD_VERSION,		4,
2455	`Version number of the GNU gold linker')
2456DEFINE_NOTE_ENTRY(NT_PRSTATUS,			1,
2457	`Process status')
2458DEFINE_NOTE_ENTRY(NT_FPREGSET,			2,
2459	`Floating point information')
2460DEFINE_NOTE_ENTRY(NT_PRPSINFO,			3,
2461	`Process information')
2462DEFINE_NOTE_ENTRY(NT_AUXV,			6,
2463	`Auxiliary vector')
2464DEFINE_NOTE_ENTRY(NT_PRXFPREG,		0x46E62B7FUL,
2465	`Linux user_xfpregs structure')
2466DEFINE_NOTE_ENTRY(NT_PSTATUS,			10,
2467	`Linux process status')
2468DEFINE_NOTE_ENTRY(NT_FPREGS,			12,
2469	`Linux floating point regset')
2470DEFINE_NOTE_ENTRY(NT_PSINFO,			13,
2471	`Linux process information')
2472DEFINE_NOTE_ENTRY(NT_LWPSTATUS,			16,
2473	`Linux lwpstatus_t type')
2474DEFINE_NOTE_ENTRY(NT_LWPSINFO,			17,
2475	`Linux lwpinfo_t type')
2476DEFINE_NOTE_ENTRY(NT_FREEBSD_NOINIT_TAG,	2,
2477	`FreeBSD no .init tag')
2478DEFINE_NOTE_ENTRY(NT_FREEBSD_ARCH_TAG,		3,
2479	`FreeBSD arch tag')
2480DEFINE_NOTE_ENTRY(NT_FREEBSD_FEATURE_CTL,	4,
2481	`FreeBSD feature control')
2482')
2483
2484# Aliases for the ABI tag.
2485define(`DEFINE_NOTE_ENTRY_ALIASES',`
2486DEFINE_NOTE_ENTRY_ALIAS(NT_FREEBSD_ABI_TAG,	NT_ABI_TAG)
2487DEFINE_NOTE_ENTRY_ALIAS(NT_GNU_ABI_TAG,		NT_ABI_TAG)
2488DEFINE_NOTE_ENTRY_ALIAS(NT_NETBSD_IDENT,	NT_ABI_TAG)
2489DEFINE_NOTE_ENTRY_ALIAS(NT_OPENBSD_IDENT,	NT_ABI_TAG)
2490')
2491
2492#
2493# Option kinds.
2494#
2495define(`DEFINE_OPTION_KINDS',`
2496DEFINE_OPTION_KIND(ODK_NULL,       0,
2497	`undefined')
2498DEFINE_OPTION_KIND(ODK_REGINFO,    1,
2499	`register usage info')
2500DEFINE_OPTION_KIND(ODK_EXCEPTIONS, 2,
2501	`exception processing info')
2502DEFINE_OPTION_KIND(ODK_PAD,        3,
2503	`section padding')
2504DEFINE_OPTION_KIND(ODK_HWPATCH,    4,
2505	`hardware patch applied')
2506DEFINE_OPTION_KIND(ODK_FILL,       5,
2507	`fill value used by linker')
2508DEFINE_OPTION_KIND(ODK_TAGS,       6,
2509	`reserved space for tools')
2510DEFINE_OPTION_KIND(ODK_HWAND,      7,
2511	`hardware AND patch applied')
2512DEFINE_OPTION_KIND(ODK_HWOR,       8,
2513	`hardware OR patch applied')
2514DEFINE_OPTION_KIND(ODK_GP_GROUP,   9,
2515	`GP group to use for text/data sections')
2516DEFINE_OPTION_KIND(ODK_IDENT,      10,
2517	`ID information')
2518DEFINE_OPTION_KIND(ODK_PAGESIZE,   11,
2519	`page size information')
2520')
2521
2522#
2523# ODK_EXCEPTIONS info field masks.
2524#
2525define(`DEFINE_OPTION_EXCEPTIONS',`
2526DEFINE_OPTION_EXCEPTION(OEX_FPU_MIN,    0x0000001FUL,
2527	`minimum FPU exception which must be enabled')
2528DEFINE_OPTION_EXCEPTION(OEX_FPU_MAX,    0x00001F00UL,
2529	`maximum FPU exception which can be enabled')
2530DEFINE_OPTION_EXCEPTION(OEX_PAGE0,      0x00010000UL,
2531	`page zero must be mapped')
2532DEFINE_OPTION_EXCEPTION(OEX_SMM,        0x00020000UL,
2533	`run in sequential memory mode')
2534DEFINE_OPTION_EXCEPTION(OEX_PRECISEFP,  0x00040000UL,
2535	`run in precise FP exception mode')
2536DEFINE_OPTION_EXCEPTION(OEX_DISMISS,    0x00080000UL,
2537	`dismiss invalid address traps')
2538')
2539
2540#
2541# ODK_PAD info field masks.
2542#
2543define(`DEFINE_OPTION_PADS',`
2544DEFINE_OPTION_PAD(OPAD_PREFIX,   0x0001)
2545DEFINE_OPTION_PAD(OPAD_POSTFIX,  0x0002)
2546DEFINE_OPTION_PAD(OPAD_SYMBOL,   0x0004)
2547')
2548
2549#
2550# ODK_HWPATCH info field masks and ODK_HWAND/ODK_HWOR
2551# info field and hwp_flags[12] masks.
2552#
2553define(`DEFINE_ODK_HWPATCH_MASKS',`
2554DEFINE_ODK_HWPATCH_MASK(OHW_R4KEOP,     0x00000001UL,
2555	`patch for R4000 branch at end-of-page bug')
2556DEFINE_ODK_HWPATCH_MASK(OHW_R8KPFETCH,  0x00000002UL,
2557	`R8000 prefetch bug may occur')
2558DEFINE_ODK_HWPATCH_MASK(OHW_R5KEOP,     0x00000004UL,
2559	`patch for R5000 branch at end-of-page bug')
2560DEFINE_ODK_HWPATCH_MASK(OHW_R5KCVTL,    0x00000008UL,
2561	`R5000 cvt.[ds].l bug: clean == 1')
2562DEFINE_ODK_HWPATCH_MASK(OHW_R10KLDL,    0x00000010UL,
2563	`need patch for R10000 misaligned load')
2564DEFINE_ODK_HWPATCH_MASK(OHWA0_R4KEOP_CHECKED, 0x00000001UL,
2565	`object checked for R4000 end-of-page bug')
2566DEFINE_ODK_HWPATCH_MASK(OHWA0_R4KEOP_CLEAN, 0x00000002UL,
2567	`object verified clean for R4000 end-of-page bug')
2568DEFINE_ODK_HWPATCH_MASK(OHWO0_FIXADE,   0x00000001UL,
2569	`object requires call to fixade')
2570')
2571
2572#
2573# ODK_IDENT/ODK_GP_GROUP info field masks.
2574#
2575define(`DEFINE_ODK_GP_MASKS',`
2576DEFINE_ODK_GP_MASK(OGP_GROUP,      0x0000FFFFUL,
2577	`GP group number')
2578DEFINE_ODK_GP_MASK(OGP_SELF,       0x00010000UL,
2579	`GP group is self-contained')
2580')
2581
2582# MIPS ABI related constants.
2583define(`DEFINE_MIPS_ABIS',`
2584DEFINE_MIPS_ABI(E_MIPS_ABI_O32,		0x00001000,
2585	`MIPS 32 bit ABI (UCODE)')
2586DEFINE_MIPS_ABI(E_MIPS_ABI_O64,		0x00002000,
2587	`UCODE MIPS 64 bit ABI')
2588DEFINE_MIPS_ABI(E_MIPS_ABI_EABI32,	0x00003000,
2589	`Embedded ABI for 32-bit')
2590DEFINE_MIPS_ABI(E_MIPS_ABI_EABI64,	0x00004000,
2591	`Embedded ABI for 64-bit')
2592')
2593