xref: /freebsd/contrib/elftoolchain/common/elfdefinitions.h (revision 839529caa9c35f92b638dbe074655598e7a6bb6f)
12de3b87aSKai Wang /*-
22de3b87aSKai Wang  * Copyright (c) 2010 Joseph Koshy
32de3b87aSKai Wang  * All rights reserved.
42de3b87aSKai Wang  *
52de3b87aSKai Wang  * Redistribution and use in source and binary forms, with or without
62de3b87aSKai Wang  * modification, are permitted provided that the following conditions
72de3b87aSKai Wang  * are met:
82de3b87aSKai Wang  * 1. Redistributions of source code must retain the above copyright
92de3b87aSKai Wang  *    notice, this list of conditions and the following disclaimer.
102de3b87aSKai Wang  * 2. Redistributions in binary form must reproduce the above copyright
112de3b87aSKai Wang  *    notice, this list of conditions and the following disclaimer in the
122de3b87aSKai Wang  *    documentation and/or other materials provided with the distribution.
132de3b87aSKai Wang  *
142de3b87aSKai Wang  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
152de3b87aSKai Wang  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
162de3b87aSKai Wang  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
172de3b87aSKai Wang  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
182de3b87aSKai Wang  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
192de3b87aSKai Wang  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
202de3b87aSKai Wang  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
212de3b87aSKai Wang  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
222de3b87aSKai Wang  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
232de3b87aSKai Wang  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
242de3b87aSKai Wang  * SUCH DAMAGE.
252de3b87aSKai Wang  *
26*839529caSEd Maste  * $Id: elfdefinitions.h 3392 2016-02-05 19:51:22Z emaste $
272de3b87aSKai Wang  */
282de3b87aSKai Wang 
292de3b87aSKai Wang /*
302de3b87aSKai Wang  * These definitions are based on:
312de3b87aSKai Wang  * - The public specification of the ELF format as defined in the
322de3b87aSKai Wang  *   October 2009 draft of System V ABI.
332de3b87aSKai Wang  *   See: http://www.sco.com/developers/gabi/latest/ch4.intro.html
342de3b87aSKai Wang  * - The May 1998 (version 1.5) draft of "The ELF-64 object format".
352de3b87aSKai Wang  * - Processor-specific ELF ABI definitions for sparc, i386, amd64, mips,
362de3b87aSKai Wang  *   ia64, and powerpc processors.
372de3b87aSKai Wang  * - The "Linkers and Libraries Guide", from Sun Microsystems.
382de3b87aSKai Wang  */
392de3b87aSKai Wang 
402de3b87aSKai Wang #ifndef _ELFDEFINITIONS_H_
412de3b87aSKai Wang #define _ELFDEFINITIONS_H_
422de3b87aSKai Wang 
432de3b87aSKai Wang #include <stdint.h>
442de3b87aSKai Wang 
452de3b87aSKai Wang /*
462de3b87aSKai Wang  * Types of capabilities.
472de3b87aSKai Wang  */
482de3b87aSKai Wang 
492de3b87aSKai Wang #define	_ELF_DEFINE_CAPABILITIES()				\
502de3b87aSKai Wang _ELF_DEFINE_CA(CA_SUNW_NULL,	0,	"ignored")		\
512de3b87aSKai Wang _ELF_DEFINE_CA(CA_SUNW_HW_1,	1,	"hardware capability")	\
522de3b87aSKai Wang _ELF_DEFINE_CA(CA_SUNW_SW_1,	2,	"software capability")
532de3b87aSKai Wang 
542de3b87aSKai Wang #undef	_ELF_DEFINE_CA
552de3b87aSKai Wang #define	_ELF_DEFINE_CA(N, V, DESCR)	N = V ,
562de3b87aSKai Wang enum {
572de3b87aSKai Wang 	_ELF_DEFINE_CAPABILITIES()
582de3b87aSKai Wang 	CA__LAST__
592de3b87aSKai Wang };
602de3b87aSKai Wang 
612de3b87aSKai Wang /*
622de3b87aSKai Wang  * Flags used with dynamic linking entries.
632de3b87aSKai Wang  */
642de3b87aSKai Wang 
652de3b87aSKai Wang #define	_ELF_DEFINE_DYN_FLAGS()					\
662de3b87aSKai Wang _ELF_DEFINE_DF(DF_ORIGIN,           0x1,			\
672de3b87aSKai Wang 	"object being loaded may refer to $ORIGIN")		\
682de3b87aSKai Wang _ELF_DEFINE_DF(DF_SYMBOLIC,         0x2,			\
692de3b87aSKai Wang 	"search library for references before executable")	\
702de3b87aSKai Wang _ELF_DEFINE_DF(DF_TEXTREL,          0x4,			\
712de3b87aSKai Wang 	"relocation entries may modify text segment")		\
722de3b87aSKai Wang _ELF_DEFINE_DF(DF_BIND_NOW,         0x8,			\
732de3b87aSKai Wang 	"process relocation entries at load time")		\
742de3b87aSKai Wang _ELF_DEFINE_DF(DF_STATIC_TLS,       0x10,			\
752de3b87aSKai Wang 	"uses static thread-local storage")
762de3b87aSKai Wang #undef	_ELF_DEFINE_DF
772de3b87aSKai Wang #define	_ELF_DEFINE_DF(N, V, DESCR)	N = V ,
782de3b87aSKai Wang enum {
792de3b87aSKai Wang 	_ELF_DEFINE_DYN_FLAGS()
802de3b87aSKai Wang 	DF__LAST__
812de3b87aSKai Wang };
822de3b87aSKai Wang 
832de3b87aSKai Wang 
842de3b87aSKai Wang /*
852de3b87aSKai Wang  * Dynamic linking entry types.
862de3b87aSKai Wang  */
872de3b87aSKai Wang 
882de3b87aSKai Wang #define	_ELF_DEFINE_DYN_TYPES()						\
892de3b87aSKai Wang _ELF_DEFINE_DT(DT_NULL,             0, "end of array")			\
902de3b87aSKai Wang _ELF_DEFINE_DT(DT_NEEDED,           1, "names a needed library")	\
912de3b87aSKai Wang _ELF_DEFINE_DT(DT_PLTRELSZ,         2,					\
922de3b87aSKai Wang 	"size in bytes of associated relocation entries")		\
932de3b87aSKai Wang _ELF_DEFINE_DT(DT_PLTGOT,           3,					\
942de3b87aSKai Wang 	"address associated with the procedure linkage table")		\
952de3b87aSKai Wang _ELF_DEFINE_DT(DT_HASH,             4,					\
962de3b87aSKai Wang 	"address of the symbol hash table")				\
972de3b87aSKai Wang _ELF_DEFINE_DT(DT_STRTAB,           5,					\
982de3b87aSKai Wang 	"address of the string table")					\
992de3b87aSKai Wang _ELF_DEFINE_DT(DT_SYMTAB,           6,					\
1002de3b87aSKai Wang 	"address of the symbol table")					\
1012de3b87aSKai Wang _ELF_DEFINE_DT(DT_RELA,             7,					\
1022de3b87aSKai Wang 	"address of the relocation table")				\
1032de3b87aSKai Wang _ELF_DEFINE_DT(DT_RELASZ,           8, "size of the DT_RELA table")	\
1042de3b87aSKai Wang _ELF_DEFINE_DT(DT_RELAENT,          9, "size of each DT_RELA entry")	\
1052de3b87aSKai Wang _ELF_DEFINE_DT(DT_STRSZ,            10, "size of the string table")	\
1062de3b87aSKai Wang _ELF_DEFINE_DT(DT_SYMENT,           11,					\
1072de3b87aSKai Wang 	"size of a symbol table entry")					\
1082de3b87aSKai Wang _ELF_DEFINE_DT(DT_INIT,             12,					\
1092de3b87aSKai Wang 	"address of the initialization function")			\
1102de3b87aSKai Wang _ELF_DEFINE_DT(DT_FINI,             13,					\
1112de3b87aSKai Wang 	"address of the finalization function")				\
1122de3b87aSKai Wang _ELF_DEFINE_DT(DT_SONAME,           14, "names the shared object")	\
1132de3b87aSKai Wang _ELF_DEFINE_DT(DT_RPATH,            15,					\
1142de3b87aSKai Wang 	"runtime library search path")					\
1152de3b87aSKai Wang _ELF_DEFINE_DT(DT_SYMBOLIC,         16,					\
1162de3b87aSKai Wang 	"alter symbol resolution algorithm")				\
1172de3b87aSKai Wang _ELF_DEFINE_DT(DT_REL,              17,					\
1182de3b87aSKai Wang 	"address of the DT_REL table")					\
1192de3b87aSKai Wang _ELF_DEFINE_DT(DT_RELSZ,            18, "size of the DT_REL table")	\
1202de3b87aSKai Wang _ELF_DEFINE_DT(DT_RELENT,           19, "size of each DT_REL entry")	\
1212de3b87aSKai Wang _ELF_DEFINE_DT(DT_PLTREL,           20,					\
1222de3b87aSKai Wang 	"type of relocation entry in the procedure linkage table")	\
1232de3b87aSKai Wang _ELF_DEFINE_DT(DT_DEBUG,            21, "used for debugging")		\
1242de3b87aSKai Wang _ELF_DEFINE_DT(DT_TEXTREL,          22,					\
1252de3b87aSKai Wang 	"text segment may be written to during relocation")		\
1262de3b87aSKai Wang _ELF_DEFINE_DT(DT_JMPREL,           23,					\
1272de3b87aSKai Wang 	"address of relocation entries associated with the procedure linkage table") \
1282de3b87aSKai Wang _ELF_DEFINE_DT(DT_BIND_NOW,         24,					\
1292de3b87aSKai Wang 	"bind symbols at loading time")					\
1302de3b87aSKai Wang _ELF_DEFINE_DT(DT_INIT_ARRAY,       25,					\
1312de3b87aSKai Wang 	"pointers to initialization functions")				\
1322de3b87aSKai Wang _ELF_DEFINE_DT(DT_FINI_ARRAY,       26,					\
1332de3b87aSKai Wang 	"pointers to termination functions")				\
1342de3b87aSKai Wang _ELF_DEFINE_DT(DT_INIT_ARRAYSZ,     27, "size of the DT_INIT_ARRAY")	\
1352de3b87aSKai Wang _ELF_DEFINE_DT(DT_FINI_ARRAYSZ,     28, "size of the DT_FINI_ARRAY")	\
1362de3b87aSKai Wang _ELF_DEFINE_DT(DT_RUNPATH,          29,					\
1372de3b87aSKai Wang 	"index of library search path string")				\
1382de3b87aSKai Wang _ELF_DEFINE_DT(DT_FLAGS,            30,					\
1392de3b87aSKai Wang 	"flags specific to the object being loaded")			\
1402de3b87aSKai Wang _ELF_DEFINE_DT(DT_ENCODING,         32, "standard semantics")		\
1412de3b87aSKai Wang _ELF_DEFINE_DT(DT_PREINIT_ARRAY,    32,					\
1422de3b87aSKai Wang 	"pointers to pre-initialization functions")			\
1432de3b87aSKai Wang _ELF_DEFINE_DT(DT_PREINIT_ARRAYSZ,  33,					\
1442de3b87aSKai Wang 	"size of pre-initialization array")				\
1452de3b87aSKai Wang _ELF_DEFINE_DT(DT_MAXPOSTAGS,	    34,					\
1462de3b87aSKai Wang 	"the number of positive tags")					\
1472de3b87aSKai Wang _ELF_DEFINE_DT(DT_LOOS,             0x6000000DUL,			\
1482de3b87aSKai Wang 	"start of OS-specific types")					\
1492de3b87aSKai Wang _ELF_DEFINE_DT(DT_SUNW_AUXILIARY,   0x6000000DUL,			\
1502de3b87aSKai Wang 	"offset of string naming auxiliary filtees")			\
1512de3b87aSKai Wang _ELF_DEFINE_DT(DT_SUNW_RTLDINF,     0x6000000EUL, "rtld internal use")	\
1522de3b87aSKai Wang _ELF_DEFINE_DT(DT_SUNW_FILTER,      0x6000000FUL,			\
1532de3b87aSKai Wang 	"offset of string naming standard filtees")			\
1542de3b87aSKai Wang _ELF_DEFINE_DT(DT_SUNW_CAP,         0x60000010UL,			\
1552de3b87aSKai Wang 	"address of hardware capabilities section")			\
1562de3b87aSKai Wang _ELF_DEFINE_DT(DT_HIOS,             0x6FFFF000UL,			\
1572de3b87aSKai Wang 	"end of OS-specific types")					\
1582de3b87aSKai Wang _ELF_DEFINE_DT(DT_VALRNGLO,         0x6FFFFD00UL,			\
1592de3b87aSKai Wang 	"start of range using the d_val field")				\
1602de3b87aSKai Wang _ELF_DEFINE_DT(DT_GNU_PRELINKED,    0x6FFFFDF5UL,			\
1612de3b87aSKai Wang 	"prelinking timestamp")						\
1622de3b87aSKai Wang _ELF_DEFINE_DT(DT_GNU_CONFLICTSZ,   0x6FFFFDF6UL,			\
1632de3b87aSKai Wang 	"size of conflict section")					\
1642de3b87aSKai Wang _ELF_DEFINE_DT(DT_GNU_LIBLISTSZ,    0x6FFFFDF7UL,			\
1652de3b87aSKai Wang 	"size of library list")						\
1662de3b87aSKai Wang _ELF_DEFINE_DT(DT_CHECKSUM,         0x6FFFFDF8UL,			\
1672de3b87aSKai Wang 	"checksum for the object")					\
1682de3b87aSKai Wang _ELF_DEFINE_DT(DT_PLTPADSZ,         0x6FFFFDF9UL,			\
1692de3b87aSKai Wang 	"size of PLT padding")						\
1702de3b87aSKai Wang _ELF_DEFINE_DT(DT_MOVEENT,          0x6FFFFDFAUL,			\
1712de3b87aSKai Wang 	"size of DT_MOVETAB entries")					\
1722de3b87aSKai Wang _ELF_DEFINE_DT(DT_MOVESZ,           0x6FFFFDFBUL,			\
1732de3b87aSKai Wang 	"total size of the MOVETAB table")				\
17467d97fe7SEd Maste _ELF_DEFINE_DT(DT_FEATURE,          0x6FFFFDFCUL, "feature values")	\
1752de3b87aSKai Wang _ELF_DEFINE_DT(DT_POSFLAG_1,        0x6FFFFDFDUL,			\
1762de3b87aSKai Wang 	"dynamic position flags")					\
1772de3b87aSKai Wang _ELF_DEFINE_DT(DT_SYMINSZ,          0x6FFFFDFEUL,			\
1782de3b87aSKai Wang 	"size of the DT_SYMINFO table")					\
1792de3b87aSKai Wang _ELF_DEFINE_DT(DT_SYMINENT,         0x6FFFFDFFUL,			\
1802de3b87aSKai Wang 	"size of a DT_SYMINFO entry")					\
1812de3b87aSKai Wang _ELF_DEFINE_DT(DT_VALRNGHI,         0x6FFFFDFFUL,			\
1822de3b87aSKai Wang 	"end of range using the d_val field")				\
1832de3b87aSKai Wang _ELF_DEFINE_DT(DT_ADDRRNGLO,        0x6FFFFE00UL,			\
1842de3b87aSKai Wang 	"start of range using the d_ptr field")				\
1852de3b87aSKai Wang _ELF_DEFINE_DT(DT_GNU_HASH,	    0x6FFFFEF5UL,			\
1862de3b87aSKai Wang 	"GNU style hash tables")					\
1872de3b87aSKai Wang _ELF_DEFINE_DT(DT_GNU_CONFLICT,     0x6FFFFEF8UL,			\
1882de3b87aSKai Wang 	"address of conflict section")					\
1892de3b87aSKai Wang _ELF_DEFINE_DT(DT_GNU_LIBLIST,      0x6FFFFEF9UL,			\
1902de3b87aSKai Wang 	"address of conflict section")					\
1912de3b87aSKai Wang _ELF_DEFINE_DT(DT_CONFIG,           0x6FFFFEFAUL,			\
1922de3b87aSKai Wang 	"configuration file")						\
1932de3b87aSKai Wang _ELF_DEFINE_DT(DT_DEPAUDIT,         0x6FFFFEFBUL,			\
1942de3b87aSKai Wang 	"string defining audit libraries")				\
1952de3b87aSKai Wang _ELF_DEFINE_DT(DT_AUDIT,            0x6FFFFEFCUL,			\
1962de3b87aSKai Wang 	"string defining audit libraries")				\
1972de3b87aSKai Wang _ELF_DEFINE_DT(DT_PLTPAD,           0x6FFFFEFDUL, "PLT padding")	\
1982de3b87aSKai Wang _ELF_DEFINE_DT(DT_MOVETAB,          0x6FFFFEFEUL,			\
1992de3b87aSKai Wang 	"address of a move table")					\
2002de3b87aSKai Wang _ELF_DEFINE_DT(DT_SYMINFO,          0x6FFFFEFFUL,			\
2012de3b87aSKai Wang 	"address of the symbol information table")			\
2022de3b87aSKai Wang _ELF_DEFINE_DT(DT_ADDRRNGHI,        0x6FFFFEFFUL,			\
2032de3b87aSKai Wang 	"end of range using the d_ptr field")				\
2042de3b87aSKai Wang _ELF_DEFINE_DT(DT_VERSYM,	    0x6FFFFFF0UL,			\
2052de3b87aSKai Wang 	"address of the version section")				\
2062de3b87aSKai Wang _ELF_DEFINE_DT(DT_RELACOUNT,        0x6FFFFFF9UL,			\
2072de3b87aSKai Wang 	"count of RELA relocations")					\
2082de3b87aSKai Wang _ELF_DEFINE_DT(DT_RELCOUNT,         0x6FFFFFFAUL,			\
2092de3b87aSKai Wang 	"count of REL relocations")					\
2102de3b87aSKai Wang _ELF_DEFINE_DT(DT_FLAGS_1,          0x6FFFFFFBUL, "flag values")	\
2112de3b87aSKai Wang _ELF_DEFINE_DT(DT_VERDEF,	    0x6FFFFFFCUL,			\
2122de3b87aSKai Wang 	"address of the version definition segment")			\
2132de3b87aSKai Wang _ELF_DEFINE_DT(DT_VERDEFNUM,	    0x6FFFFFFDUL,			\
2142de3b87aSKai Wang 	"the number of version definition entries")			\
2152de3b87aSKai Wang _ELF_DEFINE_DT(DT_VERNEED,	    0x6FFFFFFEUL,			\
2162de3b87aSKai Wang 	"address of section with needed versions")			\
2172de3b87aSKai Wang _ELF_DEFINE_DT(DT_VERNEEDNUM,       0x6FFFFFFFUL,			\
2182de3b87aSKai Wang 	"the number of version needed entries")				\
2192de3b87aSKai Wang _ELF_DEFINE_DT(DT_LOPROC,           0x70000000UL,			\
2202de3b87aSKai Wang 	"start of processor-specific types")				\
2212de3b87aSKai Wang _ELF_DEFINE_DT(DT_ARM_SYMTABSZ,	    0x70000001UL,			\
2222de3b87aSKai Wang 	"number of entries in the dynamic symbol table")		\
2232de3b87aSKai Wang _ELF_DEFINE_DT(DT_SPARC_REGISTER,   0x70000001UL,			\
2242de3b87aSKai Wang 	"index of an STT_SPARC_REGISTER symbol")			\
2252de3b87aSKai Wang _ELF_DEFINE_DT(DT_ARM_PREEMPTMAP,   0x70000002UL,			\
2262de3b87aSKai Wang 	"address of the preemption map")				\
2272de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_RLD_VERSION, 0x70000001UL,			\
2282de3b87aSKai Wang 	"version ID for runtime linker interface")			\
2292de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_TIME_STAMP,  0x70000002UL,			\
2302de3b87aSKai Wang 	"timestamp")							\
2312de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_ICHECKSUM,   0x70000003UL,			\
2322de3b87aSKai Wang 	"checksum of all external strings and common sizes")		\
2332de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_IVERSION,    0x70000004UL,			\
2342de3b87aSKai Wang 	"string table index of a version string")			\
2352de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_FLAGS,       0x70000005UL,			\
2362de3b87aSKai Wang 	"MIPS-specific flags")						\
2372de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_BASE_ADDRESS, 0x70000006UL,			\
2382de3b87aSKai Wang 	"base address for the executable/DSO")				\
2392de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_CONFLICT,    0x70000008UL,			\
2402de3b87aSKai Wang 	"address of .conflict section")					\
2412de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_LIBLIST,     0x70000009UL,			\
2422de3b87aSKai Wang 	"address of .liblist section")					\
2432de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_LOCAL_GOTNO, 0x7000000AUL,			\
2442de3b87aSKai Wang 	"number of local GOT entries")					\
2452de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_CONFLICTNO,  0x7000000BUL,			\
2462de3b87aSKai Wang 	"number of entries in the .conflict section")			\
2472de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_LIBLISTNO,   0x70000010UL,			\
2482de3b87aSKai Wang 	"number of entries in the .liblist section")			\
2492de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_SYMTABNO,    0x70000011UL,			\
2502de3b87aSKai Wang 	"number of entries in the .dynsym section")			\
2512de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_UNREFEXTNO,  0x70000012UL,			\
2522de3b87aSKai Wang 	"index of first external dynamic symbol not ref'ed locally")	\
2532de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_GOTSYM,      0x70000013UL,			\
2542de3b87aSKai Wang 	"index of first dynamic symbol corresponds to a GOT entry")	\
2552de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_HIPAGENO,    0x70000014UL,			\
2562de3b87aSKai Wang 	"number of page table entries in GOT")				\
2572de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_RLD_MAP,     0x70000016UL,			\
2582de3b87aSKai Wang 	"address of runtime linker map")				\
2592de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_DELTA_CLASS, 0x70000017UL,			\
2602de3b87aSKai Wang 	"Delta C++ class definition")					\
2612de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_DELTA_CLASS_NO, 0x70000018UL,			\
2622de3b87aSKai Wang 	"number of entries in DT_MIPS_DELTA_CLASS")			\
2632de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_DELTA_INSTANCE, 0x70000019UL,			\
2642de3b87aSKai Wang 	"Delta C++ class instances")					\
2652de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_DELTA_INSTANCE_NO, 0x7000001AUL,			\
2662de3b87aSKai Wang 	"number of entries in DT_MIPS_DELTA_INSTANCE")			\
2672de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_DELTA_RELOC, 0x7000001BUL,			\
2682de3b87aSKai Wang 	"Delta relocations")						\
2692de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_DELTA_RELOC_NO, 0x7000001CUL,			\
2702de3b87aSKai Wang 	"number of entries in DT_MIPS_DELTA_RELOC")			\
2712de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_DELTA_SYM,   0x7000001DUL,			\
2722de3b87aSKai Wang 	"Delta symbols refered by Delta relocations")			\
2732de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_DELTA_SYM_NO, 0x7000001EUL,			\
2742de3b87aSKai Wang 	"number of entries in DT_MIPS_DELTA_SYM")			\
2752de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_DELTA_CLASSSYM, 0x70000020UL,			\
2762de3b87aSKai Wang 	"Delta symbols for class declarations")				\
2772de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_DELTA_CLASSSYM_NO, 0x70000021UL,			\
2782de3b87aSKai Wang 	"number of entries in DT_MIPS_DELTA_CLASSSYM")			\
2792de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_CXX_FLAGS,   0x70000022UL,			\
2802de3b87aSKai Wang 	"C++ flavor flags")						\
2812de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_PIXIE_INIT,  0x70000023UL,			\
2822de3b87aSKai Wang 	"address of an initialization routine created by pixie")	\
2832de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_SYMBOL_LIB,  0x70000024UL,			\
2842de3b87aSKai Wang 	"address of .MIPS.symlib section")				\
2852de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_LOCALPAGE_GOTIDX, 0x70000025UL,			\
2862de3b87aSKai Wang 	"GOT index of first page table entry for a segment")		\
2872de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_LOCAL_GOTIDX, 0x70000026UL,			\
2882de3b87aSKai Wang 	"GOT index of first page table entry for a local symbol")	\
2892de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_HIDDEN_GOTIDX, 0x70000027UL,			\
2902de3b87aSKai Wang 	"GOT index of first page table entry for a hidden symbol")	\
2912de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_PROTECTED_GOTIDX, 0x70000028UL,			\
2922de3b87aSKai Wang 	"GOT index of first page table entry for a protected symbol")	\
2932de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_OPTIONS,     0x70000029UL,			\
2942de3b87aSKai Wang 	"address of .MIPS.options section")				\
2952de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_INTERFACE,   0x7000002AUL,			\
2962de3b87aSKai Wang 	"address of .MIPS.interface section")				\
2972de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_DYNSTR_ALIGN, 0x7000002BUL, "???")		\
2982de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_INTERFACE_SIZE, 0x7000002CUL,			\
2992de3b87aSKai Wang 	"size of .MIPS.interface section")				\
3002de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_RLD_TEXT_RESOLVE_ADDR, 0x7000002DUL,		\
3012de3b87aSKai Wang 	"address of _rld_text_resolve in GOT")				\
3022de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_PERF_SUFFIX, 0x7000002EUL,			\
3032de3b87aSKai Wang 	"default suffix of DSO to be appended by dlopen")		\
3042de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_COMPACT_SIZE, 0x7000002FUL,			\
3052de3b87aSKai Wang 	"size of a ucode compact relocation record (o32)")		\
3062de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_GP_VALUE,    0x70000030UL,			\
3072de3b87aSKai Wang 	"GP value of a specified GP relative range")			\
3082de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_AUX_DYNAMIC, 0x70000031UL,			\
3092de3b87aSKai Wang 	"address of an auxiliary dynamic table")			\
3102de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_PLTGOT,      0x70000032UL,			\
3112de3b87aSKai Wang 	"address of the PLTGOT")					\
3122de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_RLD_OBJ_UPDATE, 0x70000033UL,			\
3132de3b87aSKai Wang 	"object list update callback")					\
3142de3b87aSKai Wang _ELF_DEFINE_DT(DT_MIPS_RWPLT,       0x70000034UL,			\
3152de3b87aSKai Wang 	"address of a writable PLT")					\
3162de3b87aSKai Wang _ELF_DEFINE_DT(DT_PPC_GOT,          0x70000000UL,			\
3172de3b87aSKai Wang 	"value of _GLOBAL_OFFSET_TABLE_")				\
3182de3b87aSKai Wang _ELF_DEFINE_DT(DT_PPC_TLSOPT,       0x70000001UL,			\
3192de3b87aSKai Wang 	"TLS descriptor should be optimized")				\
3202de3b87aSKai Wang _ELF_DEFINE_DT(DT_PPC64_GLINK,      0x70000000UL,			\
3212de3b87aSKai Wang 	"address of .glink section")					\
3222de3b87aSKai Wang _ELF_DEFINE_DT(DT_PPC64_OPD,        0x70000001UL,			\
3232de3b87aSKai Wang 	"address of .opd section")					\
3242de3b87aSKai Wang _ELF_DEFINE_DT(DT_PPC64_OPDSZ,      0x70000002UL,			\
3252de3b87aSKai Wang 	"size of .opd section")						\
3262de3b87aSKai Wang _ELF_DEFINE_DT(DT_PPC64_TLSOPT,     0x70000003UL,			\
3272de3b87aSKai Wang 	"TLS descriptor should be optimized")				\
3282de3b87aSKai Wang _ELF_DEFINE_DT(DT_AUXILIARY,        0x7FFFFFFDUL,			\
3292de3b87aSKai Wang 	"offset of string naming auxiliary filtees")			\
3302de3b87aSKai Wang _ELF_DEFINE_DT(DT_USED,             0x7FFFFFFEUL, "ignored")		\
3312de3b87aSKai Wang _ELF_DEFINE_DT(DT_FILTER,           0x7FFFFFFFUL,			\
3322de3b87aSKai Wang 	"index of string naming filtees")				\
3332de3b87aSKai Wang _ELF_DEFINE_DT(DT_HIPROC,           0x7FFFFFFFUL,			\
3342de3b87aSKai Wang 	"end of processor-specific types")
3352de3b87aSKai Wang 
3362de3b87aSKai Wang #undef	_ELF_DEFINE_DT
3372de3b87aSKai Wang #define	_ELF_DEFINE_DT(N, V, DESCR)	N = V ,
3382de3b87aSKai Wang enum {
3392de3b87aSKai Wang 	_ELF_DEFINE_DYN_TYPES()
3402de3b87aSKai Wang 	DT__LAST__ = DT_HIPROC
3412de3b87aSKai Wang };
3422de3b87aSKai Wang 
3432de3b87aSKai Wang #define	DT_DEPRECATED_SPARC_REGISTER	DT_SPARC_REGISTER
3442de3b87aSKai Wang 
3452de3b87aSKai Wang /*
3462de3b87aSKai Wang  * Flags used in the executable header (field: e_flags).
3472de3b87aSKai Wang  */
3482de3b87aSKai Wang #define	_ELF_DEFINE_EHDR_FLAGS()					\
3492de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_RELEXEC,      0x00000001UL,			\
3502de3b87aSKai Wang 	"dynamic segment describes only how to relocate segments")	\
3512de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_HASENTRY,     0x00000002UL,			\
3522de3b87aSKai Wang 	"e_entry contains a program entry point")			\
3532de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_SYMSARESORTED, 0x00000004UL,			\
3542de3b87aSKai Wang 	"subsection of symbol table is sorted by symbol value")		\
3552de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_DYNSYMSUSESEGIDX, 0x00000008UL,			\
3562de3b87aSKai Wang 	"dynamic symbol st_shndx = containing segment index + 1")	\
3572de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_MAPSYMSFIRST, 0x00000010UL,			\
3582de3b87aSKai Wang 	"mapping symbols precede other local symbols in symtab")	\
3592de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_BE8,          0x00800000UL,			\
3602de3b87aSKai Wang 	"file contains BE-8 code")					\
3612de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_LE8,          0x00400000UL,			\
3622de3b87aSKai Wang 	"file contains LE-8 code")					\
3632de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_EABIMASK,     0xFF000000UL,			\
3642de3b87aSKai Wang 	"mask for ARM EABI version number (0 denotes GNU or unknown)")	\
3652de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_EABI_UNKNOWN, 0x00000000UL,			\
3662de3b87aSKai Wang 	"Unknown or GNU ARM EABI version number")			\
3672de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_EABI_VER1,    0x01000000UL,			\
3682de3b87aSKai Wang 	"ARM EABI version 1")						\
3692de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_EABI_VER2,    0x02000000UL,			\
3702de3b87aSKai Wang 	"ARM EABI version 2")						\
3712de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_EABI_VER3,    0x03000000UL,			\
3722de3b87aSKai Wang 	"ARM EABI version 3")						\
3732de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_EABI_VER4,    0x04000000UL,			\
3742de3b87aSKai Wang 	"ARM EABI version 4")						\
3752de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_EABI_VER5,    0x05000000UL,			\
3762de3b87aSKai Wang 	"ARM EABI version 5")						\
3772de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_INTERWORK,    0x00000004UL,			\
3782de3b87aSKai Wang 	"GNU EABI extension")						\
3792de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_APCS_26,      0x00000008UL,			\
3802de3b87aSKai Wang 	"GNU EABI extension")						\
3812de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_APCS_FLOAT,   0x00000010UL,			\
3822de3b87aSKai Wang 	"GNU EABI extension")						\
3832de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_PIC,          0x00000020UL,			\
3842de3b87aSKai Wang 	"GNU EABI extension")						\
3852de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_ALIGN8,       0x00000040UL,			\
3862de3b87aSKai Wang 	"GNU EABI extension")						\
3872de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_NEW_ABI,      0x00000080UL,			\
3882de3b87aSKai Wang 	"GNU EABI extension")						\
3892de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_OLD_ABI,      0x00000100UL,			\
3902de3b87aSKai Wang 	"GNU EABI extension")						\
3912de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_SOFT_FLOAT,   0x00000200UL,			\
3922de3b87aSKai Wang 	"GNU EABI extension")						\
3932de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_VFP_FLOAT,    0x00000400UL,			\
3942de3b87aSKai Wang 	"GNU EABI extension")						\
3952de3b87aSKai Wang _ELF_DEFINE_EF(EF_ARM_MAVERICK_FLOAT, 0x00000800UL,			\
3962de3b87aSKai Wang 	"GNU EABI extension")						\
3972de3b87aSKai Wang _ELF_DEFINE_EF(EF_MIPS_NOREORDER,   0x00000001UL,			\
3982de3b87aSKai Wang 	"at least one .noreorder directive appeared in the source")	\
3992de3b87aSKai Wang _ELF_DEFINE_EF(EF_MIPS_PIC,         0x00000002UL,			\
4002de3b87aSKai Wang 	"file contains position independent code")			\
4012de3b87aSKai Wang _ELF_DEFINE_EF(EF_MIPS_CPIC,        0x00000004UL,			\
4022de3b87aSKai Wang 	"file's code uses standard conventions for calling PIC")	\
4032de3b87aSKai Wang _ELF_DEFINE_EF(EF_MIPS_UCODE,       0x00000010UL,			\
4042de3b87aSKai Wang 	"file contains UCODE (obsolete)")				\
4052de3b87aSKai Wang _ELF_DEFINE_EF(EF_MIPS_ABI2,        0x00000020UL,			\
4062de3b87aSKai Wang 	"file follows MIPS III 32-bit ABI")				\
4072de3b87aSKai Wang _ELF_DEFINE_EF(EF_MIPS_OPTIONS_FIRST, 0x00000080UL,			\
4082de3b87aSKai Wang 	"ld(1) should process .MIPS.options section first")		\
4092de3b87aSKai Wang _ELF_DEFINE_EF(EF_MIPS_ARCH_ASE,    0x0F000000UL,			\
4102de3b87aSKai Wang 	"file uses application-specific architectural extensions")	\
4112de3b87aSKai Wang _ELF_DEFINE_EF(EF_MIPS_ARCH_ASE_MDMX, 0x08000000UL,			\
4122de3b87aSKai Wang 	"file uses MDMX multimedia extensions")				\
4132de3b87aSKai Wang _ELF_DEFINE_EF(EF_MIPS_ARCH_ASE_M16, 0x04000000UL,			\
4142de3b87aSKai Wang 	"file uses MIPS-16 ISA extensions")				\
4152de3b87aSKai Wang _ELF_DEFINE_EF(EF_MIPS_ARCH,         0xF0000000UL,			\
4162de3b87aSKai Wang 	"4-bit MIPS architecture field")				\
4172de3b87aSKai Wang _ELF_DEFINE_EF(EF_PPC_EMB,          0x80000000UL,			\
4182de3b87aSKai Wang 	"Embedded PowerPC flag")					\
4192de3b87aSKai Wang _ELF_DEFINE_EF(EF_PPC_RELOCATABLE,  0x00010000UL,			\
4202de3b87aSKai Wang 	"-mrelocatable flag")						\
4212de3b87aSKai Wang _ELF_DEFINE_EF(EF_PPC_RELOCATABLE_LIB, 0x00008000UL,			\
4222de3b87aSKai Wang 	"-mrelocatable-lib flag")					\
4232de3b87aSKai Wang _ELF_DEFINE_EF(EF_SPARC_EXT_MASK,   0x00ffff00UL,			\
4242de3b87aSKai Wang 	"Vendor Extension mask")					\
4252de3b87aSKai Wang _ELF_DEFINE_EF(EF_SPARC_32PLUS,     0x00000100UL,			\
4262de3b87aSKai Wang 	"Generic V8+ features")						\
4272de3b87aSKai Wang _ELF_DEFINE_EF(EF_SPARC_SUN_US1,    0x00000200UL,			\
4282de3b87aSKai Wang 	"Sun UltraSPARCTM 1 Extensions")				\
4292de3b87aSKai Wang _ELF_DEFINE_EF(EF_SPARC_HAL_R1,     0x00000400UL, "HAL R1 Extensions")	\
4302de3b87aSKai Wang _ELF_DEFINE_EF(EF_SPARC_SUN_US3,    0x00000800UL,			\
4312de3b87aSKai Wang 	"Sun UltraSPARC 3 Extensions")					\
4322de3b87aSKai Wang _ELF_DEFINE_EF(EF_SPARCV9_MM,       0x00000003UL,			\
4332de3b87aSKai Wang 	"Mask for Memory Model")					\
4342de3b87aSKai Wang _ELF_DEFINE_EF(EF_SPARCV9_TSO,      0x00000000UL,			\
4352de3b87aSKai Wang 	"Total Store Ordering")						\
4362de3b87aSKai Wang _ELF_DEFINE_EF(EF_SPARCV9_PSO,      0x00000001UL,			\
4372de3b87aSKai Wang 	"Partial Store Ordering")					\
4382de3b87aSKai Wang _ELF_DEFINE_EF(EF_SPARCV9_RMO,      0x00000002UL,			\
4392de3b87aSKai Wang 	"Relaxed Memory Ordering")
4402de3b87aSKai Wang 
4412de3b87aSKai Wang #undef	_ELF_DEFINE_EF
4422de3b87aSKai Wang #define	_ELF_DEFINE_EF(N, V, DESCR)	N = V ,
4432de3b87aSKai Wang enum {
4442de3b87aSKai Wang 	_ELF_DEFINE_EHDR_FLAGS()
4452de3b87aSKai Wang 	EF__LAST__
4462de3b87aSKai Wang };
4472de3b87aSKai Wang 
4482de3b87aSKai Wang /*
4492de3b87aSKai Wang  * Offsets in the `ei_ident[]` field of an ELF executable header.
4502de3b87aSKai Wang  */
4512de3b87aSKai Wang #define	_ELF_DEFINE_EI_OFFSETS()			\
4522de3b87aSKai Wang _ELF_DEFINE_EI(EI_MAG0,     0, "magic number")		\
4532de3b87aSKai Wang _ELF_DEFINE_EI(EI_MAG1,     1, "magic number")		\
4542de3b87aSKai Wang _ELF_DEFINE_EI(EI_MAG2,     2, "magic number")		\
4552de3b87aSKai Wang _ELF_DEFINE_EI(EI_MAG3,     3, "magic number")		\
4562de3b87aSKai Wang _ELF_DEFINE_EI(EI_CLASS,    4, "file class")		\
4572de3b87aSKai Wang _ELF_DEFINE_EI(EI_DATA,     5, "data encoding")		\
4582de3b87aSKai Wang _ELF_DEFINE_EI(EI_VERSION,  6, "file version")		\
4592de3b87aSKai Wang _ELF_DEFINE_EI(EI_OSABI,    7, "OS ABI kind")		\
4602de3b87aSKai Wang _ELF_DEFINE_EI(EI_ABIVERSION, 8, "OS ABI version")	\
4612de3b87aSKai Wang _ELF_DEFINE_EI(EI_PAD,	    9, "padding start")		\
4622de3b87aSKai Wang _ELF_DEFINE_EI(EI_NIDENT,  16, "total size")
4632de3b87aSKai Wang 
4642de3b87aSKai Wang #undef	_ELF_DEFINE_EI
4652de3b87aSKai Wang #define	_ELF_DEFINE_EI(N, V, DESCR)	N = V ,
4662de3b87aSKai Wang enum {
4672de3b87aSKai Wang 	_ELF_DEFINE_EI_OFFSETS()
4682de3b87aSKai Wang 	EI__LAST__
4692de3b87aSKai Wang };
4702de3b87aSKai Wang 
4712de3b87aSKai Wang /*
4722de3b87aSKai Wang  * The ELF class of an object.
4732de3b87aSKai Wang  */
4742de3b87aSKai Wang #define	_ELF_DEFINE_ELFCLASS()				\
4752de3b87aSKai Wang _ELF_DEFINE_EC(ELFCLASSNONE, 0, "Unknown ELF class")	\
4762de3b87aSKai Wang _ELF_DEFINE_EC(ELFCLASS32,   1, "32 bit objects")	\
4772de3b87aSKai Wang _ELF_DEFINE_EC(ELFCLASS64,   2, "64 bit objects")
4782de3b87aSKai Wang 
4792de3b87aSKai Wang #undef	_ELF_DEFINE_EC
4802de3b87aSKai Wang #define	_ELF_DEFINE_EC(N, V, DESCR)	N = V ,
4812de3b87aSKai Wang enum {
4822de3b87aSKai Wang 	_ELF_DEFINE_ELFCLASS()
4832de3b87aSKai Wang 	EC__LAST__
4842de3b87aSKai Wang };
4852de3b87aSKai Wang 
4862de3b87aSKai Wang /*
4872de3b87aSKai Wang  * Endianness of data in an ELF object.
4882de3b87aSKai Wang  */
4892de3b87aSKai Wang 
4902de3b87aSKai Wang #define	_ELF_DEFINE_ELF_DATA_ENDIANNESS()			\
4912de3b87aSKai Wang _ELF_DEFINE_ED(ELFDATANONE, 0, "Unknown data endianness")	\
4922de3b87aSKai Wang _ELF_DEFINE_ED(ELFDATA2LSB, 1, "little endian")			\
4932de3b87aSKai Wang _ELF_DEFINE_ED(ELFDATA2MSB, 2, "big endian")
4942de3b87aSKai Wang 
4952de3b87aSKai Wang #undef	_ELF_DEFINE_ED
4962de3b87aSKai Wang #define	_ELF_DEFINE_ED(N, V, DESCR)	N = V ,
4972de3b87aSKai Wang enum {
4982de3b87aSKai Wang 	_ELF_DEFINE_ELF_DATA_ENDIANNESS()
4992de3b87aSKai Wang 	ED__LAST__
5002de3b87aSKai Wang };
5012de3b87aSKai Wang 
5022de3b87aSKai Wang /*
5032de3b87aSKai Wang  * Values of the magic numbers used in identification array.
5042de3b87aSKai Wang  */
5052de3b87aSKai Wang #define	_ELF_DEFINE_ELF_MAGIC()			\
5062de3b87aSKai Wang _ELF_DEFINE_EMAG(ELFMAG0, 0x7FU)		\
5072de3b87aSKai Wang _ELF_DEFINE_EMAG(ELFMAG1, 'E')			\
5082de3b87aSKai Wang _ELF_DEFINE_EMAG(ELFMAG2, 'L')			\
5092de3b87aSKai Wang _ELF_DEFINE_EMAG(ELFMAG3, 'F')
5102de3b87aSKai Wang 
5112de3b87aSKai Wang #undef	_ELF_DEFINE_EMAG
5122de3b87aSKai Wang #define	_ELF_DEFINE_EMAG(N, V)		N = V ,
5132de3b87aSKai Wang enum {
5142de3b87aSKai Wang 	_ELF_DEFINE_ELF_MAGIC()
5152de3b87aSKai Wang 	ELFMAG__LAST__
5162de3b87aSKai Wang };
5172de3b87aSKai Wang 
5182de3b87aSKai Wang /*
5192de3b87aSKai Wang  * ELF OS ABI field.
5202de3b87aSKai Wang  */
5212de3b87aSKai Wang #define	_ELF_DEFINE_ELF_OSABI()						\
5222de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_NONE,       0,				\
5232de3b87aSKai Wang 	"No extensions or unspecified")					\
5242de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_SYSV,       0, "SYSV")			\
5252de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_HPUX,       1, "Hewlett-Packard HP-UX")	\
5262de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_NETBSD,     2, "NetBSD")			\
5272de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_GNU,        3, "GNU")				\
5282de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_HURD,       4, "GNU/HURD")			\
5292de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_86OPEN,     5, "86Open Common ABI")		\
5302de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_SOLARIS,    6, "Sun Solaris")			\
5312de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_AIX,        7, "AIX")				\
5322de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_IRIX,       8, "IRIX")			\
5332de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_FREEBSD,    9, "FreeBSD")			\
5342de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_TRU64,      10, "Compaq TRU64 UNIX")		\
5352de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_MODESTO,    11, "Novell Modesto")		\
5362de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_OPENBSD,    12, "Open BSD")			\
5372de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_OPENVMS,    13, "Open VMS")			\
5382de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_NSK,        14,				\
5392de3b87aSKai Wang 	"Hewlett-Packard Non-Stop Kernel")				\
5402de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_AROS,       15, "Amiga Research OS")		\
5412de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_FENIXOS,    16,				\
5422de3b87aSKai Wang 	"The FenixOS highly scalable multi-core OS")			\
5432de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_ARM_AEABI,  64,				\
5442de3b87aSKai Wang 	"ARM specific symbol versioning extensions")			\
5452de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_ARM,        97, "ARM ABI")			\
5462de3b87aSKai Wang _ELF_DEFINE_EABI(ELFOSABI_STANDALONE, 255,				\
5472de3b87aSKai Wang 	"Standalone (embedded) application")
5482de3b87aSKai Wang 
5492de3b87aSKai Wang #undef	_ELF_DEFINE_EABI
5502de3b87aSKai Wang #define	_ELF_DEFINE_EABI(N, V, DESCR)	N = V ,
5512de3b87aSKai Wang enum {
5522de3b87aSKai Wang 	_ELF_DEFINE_ELF_OSABI()
5532de3b87aSKai Wang 	ELFOSABI__LAST__
5542de3b87aSKai Wang };
5552de3b87aSKai Wang 
5562de3b87aSKai Wang #define	ELFOSABI_LINUX			ELFOSABI_GNU
5572de3b87aSKai Wang 
5582de3b87aSKai Wang /*
5592de3b87aSKai Wang  * ELF Machine types: (EM_*).
5602de3b87aSKai Wang  */
5612de3b87aSKai Wang #define	_ELF_DEFINE_ELF_MACHINES()					\
5622de3b87aSKai Wang _ELF_DEFINE_EM(EM_NONE,             0, "No machine")			\
5632de3b87aSKai Wang _ELF_DEFINE_EM(EM_M32,              1, "AT&T WE 32100")			\
5642de3b87aSKai Wang _ELF_DEFINE_EM(EM_SPARC,            2, "SPARC")				\
5652de3b87aSKai Wang _ELF_DEFINE_EM(EM_386,              3, "Intel 80386")			\
5662de3b87aSKai Wang _ELF_DEFINE_EM(EM_68K,              4, "Motorola 68000")		\
5672de3b87aSKai Wang _ELF_DEFINE_EM(EM_88K,              5, "Motorola 88000")		\
5683ef90571SEd Maste _ELF_DEFINE_EM(EM_IAMCU,            6, "Intel MCU")			\
5692de3b87aSKai Wang _ELF_DEFINE_EM(EM_860,              7, "Intel 80860")			\
5702de3b87aSKai Wang _ELF_DEFINE_EM(EM_MIPS,             8, "MIPS I Architecture")		\
5712de3b87aSKai Wang _ELF_DEFINE_EM(EM_S370,             9, "IBM System/370 Processor")	\
5722de3b87aSKai Wang _ELF_DEFINE_EM(EM_MIPS_RS3_LE,      10, "MIPS RS3000 Little-endian")	\
5732de3b87aSKai Wang _ELF_DEFINE_EM(EM_PARISC,           15, "Hewlett-Packard PA-RISC")	\
5742de3b87aSKai Wang _ELF_DEFINE_EM(EM_VPP500,           17, "Fujitsu VPP500")		\
5752de3b87aSKai Wang _ELF_DEFINE_EM(EM_SPARC32PLUS,      18,					\
5762de3b87aSKai Wang 	"Enhanced instruction set SPARC")				\
5772de3b87aSKai Wang _ELF_DEFINE_EM(EM_960,              19, "Intel 80960")			\
5782de3b87aSKai Wang _ELF_DEFINE_EM(EM_PPC,              20, "PowerPC")			\
5792de3b87aSKai Wang _ELF_DEFINE_EM(EM_PPC64,            21, "64-bit PowerPC")		\
5802de3b87aSKai Wang _ELF_DEFINE_EM(EM_S390,             22, "IBM System/390 Processor")	\
5812de3b87aSKai Wang _ELF_DEFINE_EM(EM_SPU,              23, "IBM SPU/SPC")			\
5822de3b87aSKai Wang _ELF_DEFINE_EM(EM_V800,             36, "NEC V800")			\
5832de3b87aSKai Wang _ELF_DEFINE_EM(EM_FR20,             37, "Fujitsu FR20")			\
5842de3b87aSKai Wang _ELF_DEFINE_EM(EM_RH32,             38, "TRW RH-32")			\
5852de3b87aSKai Wang _ELF_DEFINE_EM(EM_RCE,              39, "Motorola RCE")			\
5862de3b87aSKai Wang _ELF_DEFINE_EM(EM_ARM,              40, "Advanced RISC Machines ARM")	\
5872de3b87aSKai Wang _ELF_DEFINE_EM(EM_ALPHA,            41, "Digital Alpha")		\
5882de3b87aSKai Wang _ELF_DEFINE_EM(EM_SH,               42, "Hitachi SH")			\
5892de3b87aSKai Wang _ELF_DEFINE_EM(EM_SPARCV9,          43, "SPARC Version 9")		\
5902de3b87aSKai Wang _ELF_DEFINE_EM(EM_TRICORE,          44,					\
5912de3b87aSKai Wang 	"Siemens TriCore embedded processor")				\
5922de3b87aSKai Wang _ELF_DEFINE_EM(EM_ARC,              45,					\
5932de3b87aSKai Wang 	"Argonaut RISC Core, Argonaut Technologies Inc.")		\
5942de3b87aSKai Wang _ELF_DEFINE_EM(EM_H8_300,           46, "Hitachi H8/300")		\
5952de3b87aSKai Wang _ELF_DEFINE_EM(EM_H8_300H,          47, "Hitachi H8/300H")		\
5962de3b87aSKai Wang _ELF_DEFINE_EM(EM_H8S,              48, "Hitachi H8S")			\
5972de3b87aSKai Wang _ELF_DEFINE_EM(EM_H8_500,           49, "Hitachi H8/500")		\
5982de3b87aSKai Wang _ELF_DEFINE_EM(EM_IA_64,            50,					\
5992de3b87aSKai Wang 	"Intel IA-64 processor architecture")				\
6002de3b87aSKai Wang _ELF_DEFINE_EM(EM_MIPS_X,           51, "Stanford MIPS-X")		\
6012de3b87aSKai Wang _ELF_DEFINE_EM(EM_COLDFIRE,         52, "Motorola ColdFire")		\
6022de3b87aSKai Wang _ELF_DEFINE_EM(EM_68HC12,           53, "Motorola M68HC12")		\
6032de3b87aSKai Wang _ELF_DEFINE_EM(EM_MMA,              54,					\
6042de3b87aSKai Wang 	"Fujitsu MMA Multimedia Accelerator")				\
6052de3b87aSKai Wang _ELF_DEFINE_EM(EM_PCP,              55, "Siemens PCP")			\
6062de3b87aSKai Wang _ELF_DEFINE_EM(EM_NCPU,             56,					\
6072de3b87aSKai Wang 	"Sony nCPU embedded RISC processor")				\
6082de3b87aSKai Wang _ELF_DEFINE_EM(EM_NDR1,             57, "Denso NDR1 microprocessor")	\
6092de3b87aSKai Wang _ELF_DEFINE_EM(EM_STARCORE,         58, "Motorola Star*Core processor")	\
6102de3b87aSKai Wang _ELF_DEFINE_EM(EM_ME16,             59, "Toyota ME16 processor")	\
6112de3b87aSKai Wang _ELF_DEFINE_EM(EM_ST100,            60,					\
6122de3b87aSKai Wang 	"STMicroelectronics ST100 processor")				\
6132de3b87aSKai Wang _ELF_DEFINE_EM(EM_TINYJ,            61,					\
6142de3b87aSKai Wang 	"Advanced Logic Corp. TinyJ embedded processor family")		\
6152de3b87aSKai Wang _ELF_DEFINE_EM(EM_X86_64,           62, "AMD x86-64 architecture")	\
6162de3b87aSKai Wang _ELF_DEFINE_EM(EM_PDSP,             63, "Sony DSP Processor")		\
6172de3b87aSKai Wang _ELF_DEFINE_EM(EM_PDP10,            64,					\
6182de3b87aSKai Wang 	"Digital Equipment Corp. PDP-10")				\
6192de3b87aSKai Wang _ELF_DEFINE_EM(EM_PDP11,            65,					\
6202de3b87aSKai Wang 	"Digital Equipment Corp. PDP-11")				\
6212de3b87aSKai Wang _ELF_DEFINE_EM(EM_FX66,             66, "Siemens FX66 microcontroller")	\
6222de3b87aSKai Wang _ELF_DEFINE_EM(EM_ST9PLUS,          67,					\
6232de3b87aSKai Wang 	"STMicroelectronics ST9+ 8/16 bit microcontroller")		\
6242de3b87aSKai Wang _ELF_DEFINE_EM(EM_ST7,              68,					\
6252de3b87aSKai Wang 	"STMicroelectronics ST7 8-bit microcontroller")			\
6262de3b87aSKai Wang _ELF_DEFINE_EM(EM_68HC16,           69,					\
6272de3b87aSKai Wang 	"Motorola MC68HC16 Microcontroller")				\
6282de3b87aSKai Wang _ELF_DEFINE_EM(EM_68HC11,           70,					\
6292de3b87aSKai Wang 	"Motorola MC68HC11 Microcontroller")				\
6302de3b87aSKai Wang _ELF_DEFINE_EM(EM_68HC08,           71,					\
6312de3b87aSKai Wang 	"Motorola MC68HC08 Microcontroller")				\
6322de3b87aSKai Wang _ELF_DEFINE_EM(EM_68HC05,           72,					\
6332de3b87aSKai Wang 	"Motorola MC68HC05 Microcontroller")				\
6342de3b87aSKai Wang _ELF_DEFINE_EM(EM_SVX,              73, "Silicon Graphics SVx")		\
6352de3b87aSKai Wang _ELF_DEFINE_EM(EM_ST19,             74,					\
6362de3b87aSKai Wang 	"STMicroelectronics ST19 8-bit microcontroller")		\
6372de3b87aSKai Wang _ELF_DEFINE_EM(EM_VAX,              75, "Digital VAX")			\
6382de3b87aSKai Wang _ELF_DEFINE_EM(EM_CRIS,             76,					\
6392de3b87aSKai Wang 	"Axis Communications 32-bit embedded processor")		\
6402de3b87aSKai Wang _ELF_DEFINE_EM(EM_JAVELIN,          77,					\
6412de3b87aSKai Wang 	"Infineon Technologies 32-bit embedded processor")		\
6422de3b87aSKai Wang _ELF_DEFINE_EM(EM_FIREPATH,         78,					\
6432de3b87aSKai Wang 	"Element 14 64-bit DSP Processor")				\
6442de3b87aSKai Wang _ELF_DEFINE_EM(EM_ZSP,              79,					\
6452de3b87aSKai Wang 	"LSI Logic 16-bit DSP Processor")				\
6462de3b87aSKai Wang _ELF_DEFINE_EM(EM_MMIX,             80,					\
6472de3b87aSKai Wang 	"Donald Knuth's educational 64-bit processor")			\
6482de3b87aSKai Wang _ELF_DEFINE_EM(EM_HUANY,            81,					\
6492de3b87aSKai Wang 	"Harvard University machine-independent object files")		\
6502de3b87aSKai Wang _ELF_DEFINE_EM(EM_PRISM,            82, "SiTera Prism")			\
6512de3b87aSKai Wang _ELF_DEFINE_EM(EM_AVR,              83,					\
6522de3b87aSKai Wang 	"Atmel AVR 8-bit microcontroller")				\
6532de3b87aSKai Wang _ELF_DEFINE_EM(EM_FR30,             84, "Fujitsu FR30")			\
6542de3b87aSKai Wang _ELF_DEFINE_EM(EM_D10V,             85, "Mitsubishi D10V")		\
6552de3b87aSKai Wang _ELF_DEFINE_EM(EM_D30V,             86, "Mitsubishi D30V")		\
6562de3b87aSKai Wang _ELF_DEFINE_EM(EM_V850,             87, "NEC v850")			\
6572de3b87aSKai Wang _ELF_DEFINE_EM(EM_M32R,             88, "Mitsubishi M32R")		\
6582de3b87aSKai Wang _ELF_DEFINE_EM(EM_MN10300,          89, "Matsushita MN10300")		\
6592de3b87aSKai Wang _ELF_DEFINE_EM(EM_MN10200,          90, "Matsushita MN10200")		\
6602de3b87aSKai Wang _ELF_DEFINE_EM(EM_PJ,               91, "picoJava")			\
6612de3b87aSKai Wang _ELF_DEFINE_EM(EM_OPENRISC,         92,					\
6622de3b87aSKai Wang 	"OpenRISC 32-bit embedded processor")				\
6632de3b87aSKai Wang _ELF_DEFINE_EM(EM_ARC_COMPACT,      93,					\
6642de3b87aSKai Wang 	"ARC International ARCompact processor")			\
6652de3b87aSKai Wang _ELF_DEFINE_EM(EM_XTENSA,           94,					\
6662de3b87aSKai Wang 	"Tensilica Xtensa Architecture")				\
6672de3b87aSKai Wang _ELF_DEFINE_EM(EM_VIDEOCORE,        95,					\
6682de3b87aSKai Wang 	"Alphamosaic VideoCore processor")				\
6692de3b87aSKai Wang _ELF_DEFINE_EM(EM_TMM_GPP,          96,					\
6702de3b87aSKai Wang 	"Thompson Multimedia General Purpose Processor")		\
6712de3b87aSKai Wang _ELF_DEFINE_EM(EM_NS32K,            97,					\
6722de3b87aSKai Wang 	"National Semiconductor 32000 series")				\
6732de3b87aSKai Wang _ELF_DEFINE_EM(EM_TPC,              98, "Tenor Network TPC processor")	\
6742de3b87aSKai Wang _ELF_DEFINE_EM(EM_SNP1K,            99, "Trebia SNP 1000 processor")	\
6752de3b87aSKai Wang _ELF_DEFINE_EM(EM_ST200,            100,				\
6762de3b87aSKai Wang 	"STMicroelectronics (www.st.com) ST200 microcontroller")	\
6772de3b87aSKai Wang _ELF_DEFINE_EM(EM_IP2K,             101,				\
6782de3b87aSKai Wang 	"Ubicom IP2xxx microcontroller family")				\
6792de3b87aSKai Wang _ELF_DEFINE_EM(EM_MAX,              102, "MAX Processor")		\
6802de3b87aSKai Wang _ELF_DEFINE_EM(EM_CR,               103,				\
6812de3b87aSKai Wang 	"National Semiconductor CompactRISC microprocessor")		\
6822de3b87aSKai Wang _ELF_DEFINE_EM(EM_F2MC16,           104, "Fujitsu F2MC16")		\
6832de3b87aSKai Wang _ELF_DEFINE_EM(EM_MSP430,           105,				\
6842de3b87aSKai Wang 	"Texas Instruments embedded microcontroller msp430")		\
6852de3b87aSKai Wang _ELF_DEFINE_EM(EM_BLACKFIN,         106,				\
6862de3b87aSKai Wang 	"Analog Devices Blackfin (DSP) processor")			\
6872de3b87aSKai Wang _ELF_DEFINE_EM(EM_SE_C33,           107,				\
6882de3b87aSKai Wang 	"S1C33 Family of Seiko Epson processors")			\
6892de3b87aSKai Wang _ELF_DEFINE_EM(EM_SEP,              108,				\
6902de3b87aSKai Wang 	"Sharp embedded microprocessor")				\
6912de3b87aSKai Wang _ELF_DEFINE_EM(EM_ARCA,             109, "Arca RISC Microprocessor")	\
6922de3b87aSKai Wang _ELF_DEFINE_EM(EM_UNICORE,          110,				\
6932de3b87aSKai Wang 	"Microprocessor series from PKU-Unity Ltd. and MPRC of Peking University") \
6942de3b87aSKai Wang _ELF_DEFINE_EM(EM_EXCESS,           111,				\
6952de3b87aSKai Wang 	"eXcess: 16/32/64-bit configurable embedded CPU")		\
6962de3b87aSKai Wang _ELF_DEFINE_EM(EM_DXP,              112,				\
6972de3b87aSKai Wang 	"Icera Semiconductor Inc. Deep Execution Processor")		\
6982de3b87aSKai Wang _ELF_DEFINE_EM(EM_ALTERA_NIOS2,     113,				\
6992de3b87aSKai Wang 	"Altera Nios II soft-core processor")				\
7002de3b87aSKai Wang _ELF_DEFINE_EM(EM_CRX,              114,				\
7012de3b87aSKai Wang 	"National Semiconductor CompactRISC CRX microprocessor")	\
7022de3b87aSKai Wang _ELF_DEFINE_EM(EM_XGATE,            115,				\
7032de3b87aSKai Wang 	"Motorola XGATE embedded processor")				\
7042de3b87aSKai Wang _ELF_DEFINE_EM(EM_C166,             116,				\
7052de3b87aSKai Wang 	"Infineon C16x/XC16x processor")				\
7062de3b87aSKai Wang _ELF_DEFINE_EM(EM_M16C,             117,				\
7072de3b87aSKai Wang 	"Renesas M16C series microprocessors")				\
7082de3b87aSKai Wang _ELF_DEFINE_EM(EM_DSPIC30F,         118,				\
7092de3b87aSKai Wang 	"Microchip Technology dsPIC30F Digital Signal Controller")	\
7102de3b87aSKai Wang _ELF_DEFINE_EM(EM_CE,               119,				\
7112de3b87aSKai Wang 	"Freescale Communication Engine RISC core")			\
7122de3b87aSKai Wang _ELF_DEFINE_EM(EM_M32C,             120,				\
7132de3b87aSKai Wang 	"Renesas M32C series microprocessors")				\
7142de3b87aSKai Wang _ELF_DEFINE_EM(EM_TSK3000,          131, "Altium TSK3000 core")		\
7152de3b87aSKai Wang _ELF_DEFINE_EM(EM_RS08,             132,				\
7162de3b87aSKai Wang 	"Freescale RS08 embedded processor")				\
7172de3b87aSKai Wang _ELF_DEFINE_EM(EM_SHARC,            133,				\
7182de3b87aSKai Wang 	"Analog Devices SHARC family of 32-bit DSP processors")		\
7192de3b87aSKai Wang _ELF_DEFINE_EM(EM_ECOG2,            134,				\
7202de3b87aSKai Wang 	"Cyan Technology eCOG2 microprocessor")				\
7212de3b87aSKai Wang _ELF_DEFINE_EM(EM_SCORE7,           135,				\
7222de3b87aSKai Wang 	"Sunplus S+core7 RISC processor")				\
7232de3b87aSKai Wang _ELF_DEFINE_EM(EM_DSP24,            136,				\
7242de3b87aSKai Wang 	"New Japan Radio (NJR) 24-bit DSP Processor")			\
7252de3b87aSKai Wang _ELF_DEFINE_EM(EM_VIDEOCORE3,       137,				\
7262de3b87aSKai Wang 	"Broadcom VideoCore III processor")				\
7272de3b87aSKai Wang _ELF_DEFINE_EM(EM_LATTICEMICO32,    138,				\
7282de3b87aSKai Wang 	"RISC processor for Lattice FPGA architecture")			\
7292de3b87aSKai Wang _ELF_DEFINE_EM(EM_SE_C17,           139, "Seiko Epson C17 family")	\
7302de3b87aSKai Wang _ELF_DEFINE_EM(EM_TI_C6000,         140,				\
7312de3b87aSKai Wang 	"The Texas Instruments TMS320C6000 DSP family")			\
7322de3b87aSKai Wang _ELF_DEFINE_EM(EM_TI_C2000,         141,				\
7332de3b87aSKai Wang 	"The Texas Instruments TMS320C2000 DSP family")			\
7342de3b87aSKai Wang _ELF_DEFINE_EM(EM_TI_C5500,         142,				\
7352de3b87aSKai Wang 	"The Texas Instruments TMS320C55x DSP family")			\
7362de3b87aSKai Wang _ELF_DEFINE_EM(EM_MMDSP_PLUS,       160,				\
7372de3b87aSKai Wang 	"STMicroelectronics 64bit VLIW Data Signal Processor")		\
7382de3b87aSKai Wang _ELF_DEFINE_EM(EM_CYPRESS_M8C,      161, "Cypress M8C microprocessor")	\
7392de3b87aSKai Wang _ELF_DEFINE_EM(EM_R32C,             162,				\
7402de3b87aSKai Wang 	"Renesas R32C series microprocessors")				\
7412de3b87aSKai Wang _ELF_DEFINE_EM(EM_TRIMEDIA,         163,				\
7422de3b87aSKai Wang 	"NXP Semiconductors TriMedia architecture family")		\
7432de3b87aSKai Wang _ELF_DEFINE_EM(EM_QDSP6,            164, "QUALCOMM DSP6 Processor")	\
7442de3b87aSKai Wang _ELF_DEFINE_EM(EM_8051,             165, "Intel 8051 and variants")	\
7452de3b87aSKai Wang _ELF_DEFINE_EM(EM_STXP7X,           166,				\
7462de3b87aSKai Wang 	"STMicroelectronics STxP7x family of configurable and extensible RISC processors") \
7472de3b87aSKai Wang _ELF_DEFINE_EM(EM_NDS32,            167,				\
7482de3b87aSKai Wang 	"Andes Technology compact code size embedded RISC processor family") \
7492de3b87aSKai Wang _ELF_DEFINE_EM(EM_ECOG1,            168,				\
7502de3b87aSKai Wang 	"Cyan Technology eCOG1X family")				\
7512de3b87aSKai Wang _ELF_DEFINE_EM(EM_ECOG1X,           168,				\
7522de3b87aSKai Wang 	"Cyan Technology eCOG1X family")				\
7532de3b87aSKai Wang _ELF_DEFINE_EM(EM_MAXQ30,           169,				\
7542de3b87aSKai Wang 	"Dallas Semiconductor MAXQ30 Core Micro-controllers")		\
7552de3b87aSKai Wang _ELF_DEFINE_EM(EM_XIMO16,           170,				\
7562de3b87aSKai Wang 	"New Japan Radio (NJR) 16-bit DSP Processor")			\
7572de3b87aSKai Wang _ELF_DEFINE_EM(EM_MANIK,            171,				\
7582de3b87aSKai Wang 	"M2000 Reconfigurable RISC Microprocessor")			\
7592de3b87aSKai Wang _ELF_DEFINE_EM(EM_CRAYNV2,          172,				\
7602de3b87aSKai Wang 	"Cray Inc. NV2 vector architecture")				\
7612de3b87aSKai Wang _ELF_DEFINE_EM(EM_RX,               173, "Renesas RX family")		\
7622de3b87aSKai Wang _ELF_DEFINE_EM(EM_METAG,            174,				\
7632de3b87aSKai Wang 	"Imagination Technologies META processor architecture")		\
7642de3b87aSKai Wang _ELF_DEFINE_EM(EM_MCST_ELBRUS,      175,				\
7652de3b87aSKai Wang 	"MCST Elbrus general purpose hardware architecture")		\
7662de3b87aSKai Wang _ELF_DEFINE_EM(EM_ECOG16,           176,				\
7672de3b87aSKai Wang 	"Cyan Technology eCOG16 family")				\
7682de3b87aSKai Wang _ELF_DEFINE_EM(EM_CR16,             177,				\
7692de3b87aSKai Wang 	"National Semiconductor CompactRISC CR16 16-bit microprocessor") \
7702de3b87aSKai Wang _ELF_DEFINE_EM(EM_ETPU,             178,				\
7712de3b87aSKai Wang 	"Freescale Extended Time Processing Unit")			\
7722de3b87aSKai Wang _ELF_DEFINE_EM(EM_SLE9X,            179,				\
7732de3b87aSKai Wang 	"Infineon Technologies SLE9X core")				\
774b3f26809SEd Maste _ELF_DEFINE_EM(EM_AARCH64,          183,				\
775b3f26809SEd Maste 	"AArch64 (64-bit ARM)")						\
7762de3b87aSKai Wang _ELF_DEFINE_EM(EM_AVR32,            185,				\
7772de3b87aSKai Wang 	"Atmel Corporation 32-bit microprocessor family")		\
7782de3b87aSKai Wang _ELF_DEFINE_EM(EM_STM8,             186,				\
7792de3b87aSKai Wang 	"STMicroeletronics STM8 8-bit microcontroller")			\
7802de3b87aSKai Wang _ELF_DEFINE_EM(EM_TILE64,           187,				\
7812de3b87aSKai Wang 	"Tilera TILE64 multicore architecture family")			\
7822de3b87aSKai Wang _ELF_DEFINE_EM(EM_TILEPRO,          188,				\
7832de3b87aSKai Wang 	"Tilera TILEPro multicore architecture family")			\
7842de3b87aSKai Wang _ELF_DEFINE_EM(EM_MICROBLAZE,       189,				\
7852de3b87aSKai Wang 	"Xilinx MicroBlaze 32-bit RISC soft processor core")		\
7862de3b87aSKai Wang _ELF_DEFINE_EM(EM_CUDA,             190, "NVIDIA CUDA architecture")	\
7872de3b87aSKai Wang _ELF_DEFINE_EM(EM_TILEGX,           191,				\
7882de3b87aSKai Wang 	"Tilera TILE-Gx multicore architecture family")			\
7892de3b87aSKai Wang _ELF_DEFINE_EM(EM_CLOUDSHIELD,      192,				\
7902de3b87aSKai Wang 	"CloudShield architecture family")				\
7912de3b87aSKai Wang _ELF_DEFINE_EM(EM_COREA_1ST,        193,				\
7922de3b87aSKai Wang 	"KIPO-KAIST Core-A 1st generation processor family")		\
7932de3b87aSKai Wang _ELF_DEFINE_EM(EM_COREA_2ND,        194,				\
7942de3b87aSKai Wang 	"KIPO-KAIST Core-A 2nd generation processor family")		\
7952de3b87aSKai Wang _ELF_DEFINE_EM(EM_ARC_COMPACT2,     195, "Synopsys ARCompact V2")	\
7962de3b87aSKai Wang _ELF_DEFINE_EM(EM_OPEN8,            196,				\
7972de3b87aSKai Wang 	"Open8 8-bit RISC soft processor core")				\
7982de3b87aSKai Wang _ELF_DEFINE_EM(EM_RL78,             197, "Renesas RL78 family")		\
7992de3b87aSKai Wang _ELF_DEFINE_EM(EM_VIDEOCORE5,       198, "Broadcom VideoCore V processor") \
8002de3b87aSKai Wang _ELF_DEFINE_EM(EM_78KOR,            199, "Renesas 78KOR family")	\
8012de3b87aSKai Wang _ELF_DEFINE_EM(EM_56800EX,          200,				\
8022de3b87aSKai Wang 	"Freescale 56800EX Digital Signal Controller")			\
8032de3b87aSKai Wang _ELF_DEFINE_EM(EM_BA1,              201, "Beyond BA1 CPU architecture")	\
8042de3b87aSKai Wang _ELF_DEFINE_EM(EM_BA2,              202, "Beyond BA2 CPU architecture")	\
8052de3b87aSKai Wang _ELF_DEFINE_EM(EM_XCORE,            203, "XMOS xCORE processor family") \
8062de3b87aSKai Wang _ELF_DEFINE_EM(EM_MCHP_PIC,         204, "Microchip 8-bit PIC(r) family") \
8072de3b87aSKai Wang _ELF_DEFINE_EM(EM_INTEL205,         205, "Reserved by Intel")           \
8082de3b87aSKai Wang _ELF_DEFINE_EM(EM_INTEL206,         206, "Reserved by Intel")           \
8092de3b87aSKai Wang _ELF_DEFINE_EM(EM_INTEL207,         207, "Reserved by Intel")           \
8102de3b87aSKai Wang _ELF_DEFINE_EM(EM_INTEL208,         208, "Reserved by Intel")           \
8112de3b87aSKai Wang _ELF_DEFINE_EM(EM_INTEL209,         209, "Reserved by Intel")           \
8122de3b87aSKai Wang _ELF_DEFINE_EM(EM_KM32,             210, "KM211 KM32 32-bit processor") \
8132de3b87aSKai Wang _ELF_DEFINE_EM(EM_KMX32,            211, "KM211 KMX32 32-bit processor") \
8142de3b87aSKai Wang _ELF_DEFINE_EM(EM_KMX16,            212, "KM211 KMX16 16-bit processor") \
8152de3b87aSKai Wang _ELF_DEFINE_EM(EM_KMX8,             213, "KM211 KMX8 8-bit processor")  \
816119b7592SEd Maste _ELF_DEFINE_EM(EM_KVARC,            214, "KM211 KMX32 KVARC processor") \
817119b7592SEd Maste _ELF_DEFINE_EM(EM_RISCV,            243, "RISC-V")
8182de3b87aSKai Wang 
8192de3b87aSKai Wang #undef	_ELF_DEFINE_EM
8202de3b87aSKai Wang #define	_ELF_DEFINE_EM(N, V, DESCR)	N = V ,
8212de3b87aSKai Wang enum {
8222de3b87aSKai Wang 	_ELF_DEFINE_ELF_MACHINES()
8232de3b87aSKai Wang 	EM__LAST__
8242de3b87aSKai Wang };
8252de3b87aSKai Wang 
826cf781b2eSEd Maste /* Other synonyms. */
827cf781b2eSEd Maste #define	EM_AMD64		EM_X86_64
8282de3b87aSKai Wang #define	EM_ARC_A5		EM_ARC_COMPACT
8292de3b87aSKai Wang 
8302de3b87aSKai Wang /*
8312de3b87aSKai Wang  * ELF file types: (ET_*).
8322de3b87aSKai Wang  */
8332de3b87aSKai Wang #define	_ELF_DEFINE_ELF_TYPES()						\
8342de3b87aSKai Wang _ELF_DEFINE_ET(ET_NONE,   0,	    "No file type")			\
8352de3b87aSKai Wang _ELF_DEFINE_ET(ET_REL,    1, 	    "Relocatable object")		\
8362de3b87aSKai Wang _ELF_DEFINE_ET(ET_EXEC,   2, 	    "Executable")			\
8372de3b87aSKai Wang _ELF_DEFINE_ET(ET_DYN,    3, 	    "Shared object")			\
8382de3b87aSKai Wang _ELF_DEFINE_ET(ET_CORE,   4, 	    "Core file")			\
8392de3b87aSKai Wang _ELF_DEFINE_ET(ET_LOOS,   0xFE00U,  "Begin OS-specific range")		\
8402de3b87aSKai Wang _ELF_DEFINE_ET(ET_HIOS,   0xFEFFU,  "End OS-specific range")		\
8412de3b87aSKai Wang _ELF_DEFINE_ET(ET_LOPROC, 0xFF00U,  "Begin processor-specific range")	\
8422de3b87aSKai Wang _ELF_DEFINE_ET(ET_HIPROC, 0xFFFFU,  "End processor-specific range")
8432de3b87aSKai Wang 
8442de3b87aSKai Wang #undef	_ELF_DEFINE_ET
8452de3b87aSKai Wang #define	_ELF_DEFINE_ET(N, V, DESCR)	N = V ,
8462de3b87aSKai Wang enum {
8472de3b87aSKai Wang 	_ELF_DEFINE_ELF_TYPES()
8482de3b87aSKai Wang 	ET__LAST__
8492de3b87aSKai Wang };
8502de3b87aSKai Wang 
8512de3b87aSKai Wang /* ELF file format version numbers. */
8522de3b87aSKai Wang #define	EV_NONE		0
8532de3b87aSKai Wang #define	EV_CURRENT	1
8542de3b87aSKai Wang 
8552de3b87aSKai Wang /*
8562de3b87aSKai Wang  * Flags for section groups.
8572de3b87aSKai Wang  */
8582de3b87aSKai Wang #define	GRP_COMDAT 	0x1		/* COMDAT semantics */
8592de3b87aSKai Wang #define	GRP_MASKOS 	0x0ff00000	/* OS-specific flags */
8602de3b87aSKai Wang #define	GRP_MASKPROC 	0xf0000000	/* processor-specific flags */
8612de3b87aSKai Wang 
8622de3b87aSKai Wang /*
863656f49f8SEd Maste  * Flags / mask for .gnu.versym sections.
864656f49f8SEd Maste  */
865656f49f8SEd Maste #define	VERSYM_VERSION	0x7fff
866656f49f8SEd Maste #define	VERSYM_HIDDEN	0x8000
867656f49f8SEd Maste 
868656f49f8SEd Maste /*
8692de3b87aSKai Wang  * Flags used by program header table entries.
8702de3b87aSKai Wang  */
8712de3b87aSKai Wang 
8722de3b87aSKai Wang #define	_ELF_DEFINE_PHDR_FLAGS()					\
8732de3b87aSKai Wang _ELF_DEFINE_PF(PF_X,                0x1, "Execute")			\
8742de3b87aSKai Wang _ELF_DEFINE_PF(PF_W,                0x2, "Write")			\
8752de3b87aSKai Wang _ELF_DEFINE_PF(PF_R,                0x4, "Read")			\
8762de3b87aSKai Wang _ELF_DEFINE_PF(PF_MASKOS,           0x0ff00000, "OS-specific flags")	\
8772de3b87aSKai Wang _ELF_DEFINE_PF(PF_MASKPROC,         0xf0000000, "Processor-specific flags") \
8782de3b87aSKai Wang _ELF_DEFINE_PF(PF_ARM_SB,           0x10000000,				\
8792de3b87aSKai Wang 	"segment contains the location addressed by the static base")	\
8802de3b87aSKai Wang _ELF_DEFINE_PF(PF_ARM_PI,           0x20000000,				\
8812de3b87aSKai Wang 	"segment is position-independent")				\
8822de3b87aSKai Wang _ELF_DEFINE_PF(PF_ARM_ABS,          0x40000000,				\
8832de3b87aSKai Wang 	"segment must be loaded at its base address")
8842de3b87aSKai Wang 
8852de3b87aSKai Wang #undef	_ELF_DEFINE_PF
8862de3b87aSKai Wang #define	_ELF_DEFINE_PF(N, V, DESCR)	N = V ,
8872de3b87aSKai Wang enum {
8882de3b87aSKai Wang 	_ELF_DEFINE_PHDR_FLAGS()
8892de3b87aSKai Wang 	PF__LAST__
8902de3b87aSKai Wang };
8912de3b87aSKai Wang 
8922de3b87aSKai Wang /*
8932de3b87aSKai Wang  * Types of program header table entries.
8942de3b87aSKai Wang  */
8952de3b87aSKai Wang 
8962de3b87aSKai Wang #define	_ELF_DEFINE_PHDR_TYPES()				\
8972de3b87aSKai Wang _ELF_DEFINE_PT(PT_NULL,             0, "ignored entry")		\
8982de3b87aSKai Wang _ELF_DEFINE_PT(PT_LOAD,             1, "loadable segment")	\
8992de3b87aSKai Wang _ELF_DEFINE_PT(PT_DYNAMIC,          2,				\
9002de3b87aSKai Wang 	"contains dynamic linking information")			\
9012de3b87aSKai Wang _ELF_DEFINE_PT(PT_INTERP,           3, "names an interpreter")	\
9022de3b87aSKai Wang _ELF_DEFINE_PT(PT_NOTE,             4, "auxiliary information")	\
9032de3b87aSKai Wang _ELF_DEFINE_PT(PT_SHLIB,            5, "reserved")		\
9042de3b87aSKai Wang _ELF_DEFINE_PT(PT_PHDR,             6,				\
9052de3b87aSKai Wang 	"describes the program header itself")			\
9062de3b87aSKai Wang _ELF_DEFINE_PT(PT_TLS,              7, "thread local storage")	\
9072de3b87aSKai Wang _ELF_DEFINE_PT(PT_LOOS,             0x60000000UL,		\
9082de3b87aSKai Wang 	"start of OS-specific range")				\
9092de3b87aSKai Wang _ELF_DEFINE_PT(PT_SUNW_UNWIND,      0x6464E550UL,		\
9102de3b87aSKai Wang 	"Solaris/amd64 stack unwind tables")			\
9112de3b87aSKai Wang _ELF_DEFINE_PT(PT_GNU_EH_FRAME,     0x6474E550UL,		\
9122de3b87aSKai Wang 	"GCC generated .eh_frame_hdr segment")			\
9132de3b87aSKai Wang _ELF_DEFINE_PT(PT_GNU_STACK,	    0x6474E551UL,		\
9142de3b87aSKai Wang 	"Stack flags")						\
9152de3b87aSKai Wang _ELF_DEFINE_PT(PT_GNU_RELRO,	    0x6474E552UL,		\
9162de3b87aSKai Wang 	"Segment becomes read-only after relocation")		\
9172de3b87aSKai Wang _ELF_DEFINE_PT(PT_SUNWBSS,          0x6FFFFFFAUL,		\
9182de3b87aSKai Wang 	"A Solaris .SUNW_bss section")				\
9192de3b87aSKai Wang _ELF_DEFINE_PT(PT_SUNWSTACK,        0x6FFFFFFBUL,		\
9202de3b87aSKai Wang 	"A Solaris process stack")				\
9212de3b87aSKai Wang _ELF_DEFINE_PT(PT_SUNWDTRACE,       0x6FFFFFFCUL,		\
9222de3b87aSKai Wang 	"Used by dtrace(1)")					\
9232de3b87aSKai Wang _ELF_DEFINE_PT(PT_SUNWCAP,          0x6FFFFFFDUL,		\
9242de3b87aSKai Wang 	"Special hardware capability requirements")		\
9252de3b87aSKai Wang _ELF_DEFINE_PT(PT_HIOS,             0x6FFFFFFFUL,		\
9262de3b87aSKai Wang 	"end of OS-specific range")				\
9272de3b87aSKai Wang _ELF_DEFINE_PT(PT_LOPROC,           0x70000000UL,		\
9282de3b87aSKai Wang 	"start of processor-specific range")			\
9292de3b87aSKai Wang _ELF_DEFINE_PT(PT_ARM_ARCHEXT,      0x70000000UL,		\
9302de3b87aSKai Wang 	"platform architecture compatibility information")	\
9312de3b87aSKai Wang _ELF_DEFINE_PT(PT_ARM_EXIDX,        0x70000001UL,		\
9322de3b87aSKai Wang 	"exception unwind tables")				\
9332de3b87aSKai Wang _ELF_DEFINE_PT(PT_MIPS_REGINFO,     0x70000000UL,		\
9342de3b87aSKai Wang 	"register usage information")				\
9352de3b87aSKai Wang _ELF_DEFINE_PT(PT_MIPS_RTPROC,      0x70000001UL,		\
9362de3b87aSKai Wang 	"runtime procedure table")				\
9372de3b87aSKai Wang _ELF_DEFINE_PT(PT_MIPS_OPTIONS,     0x70000002UL,		\
9382de3b87aSKai Wang 	"options segment")					\
9392de3b87aSKai Wang _ELF_DEFINE_PT(PT_HIPROC,           0x7FFFFFFFUL,		\
9402de3b87aSKai Wang 	"end of processor-specific range")
9412de3b87aSKai Wang 
9422de3b87aSKai Wang #undef	_ELF_DEFINE_PT
9432de3b87aSKai Wang #define	_ELF_DEFINE_PT(N, V, DESCR)	N = V ,
9442de3b87aSKai Wang enum {
9452de3b87aSKai Wang 	_ELF_DEFINE_PHDR_TYPES()
9462de3b87aSKai Wang 	PT__LAST__ = PT_HIPROC
9472de3b87aSKai Wang };
9482de3b87aSKai Wang 
9492de3b87aSKai Wang /* synonyms. */
9502de3b87aSKai Wang #define	PT_ARM_UNWIND	PT_ARM_EXIDX
9512de3b87aSKai Wang #define	PT_HISUNW	PT_HIOS
9522de3b87aSKai Wang #define	PT_LOSUNW	PT_SUNWBSS
9532de3b87aSKai Wang 
9542de3b87aSKai Wang /*
9552de3b87aSKai Wang  * Section flags.
9562de3b87aSKai Wang  */
9572de3b87aSKai Wang 
9582de3b87aSKai Wang #define	_ELF_DEFINE_SECTION_FLAGS()					\
9592de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_WRITE,           0x1,				\
9602de3b87aSKai Wang 	"writable during program execution")				\
9612de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_ALLOC,           0x2,				\
9622de3b87aSKai Wang 	"occupies memory during program execution")			\
9632de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_EXECINSTR,       0x4, "executable instructions")	\
9642de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_MERGE,           0x10,				\
9652de3b87aSKai Wang 	"may be merged to prevent duplication")				\
9662de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_STRINGS,         0x20,				\
9672de3b87aSKai Wang 	"NUL-terminated character strings")				\
9682de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_INFO_LINK,       0x40,				\
9692de3b87aSKai Wang 	"the sh_info field holds a link")				\
9702de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_LINK_ORDER,      0x80,				\
9712de3b87aSKai Wang 	"special ordering requirements during linking")			\
9722de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_OS_NONCONFORMING, 0x100,				\
9732de3b87aSKai Wang 	"requires OS-specific processing during linking")		\
9742de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_GROUP,           0x200,				\
9752de3b87aSKai Wang 	"member of a section group")					\
9762de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_TLS,             0x400,				\
9772de3b87aSKai Wang 	"holds thread-local storage")					\
9782de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_COMPRESSED,      0x800,				\
9792de3b87aSKai Wang 	"holds compressed data")					\
9802de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_MASKOS,          0x0FF00000UL,			\
9812de3b87aSKai Wang 	"bits reserved for OS-specific semantics")			\
9822de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_AMD64_LARGE,     0x10000000UL,			\
9832de3b87aSKai Wang 	"section uses large code model")				\
9842de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_ENTRYSECT,       0x10000000UL,			\
9852de3b87aSKai Wang 	"section contains an entry point (ARM)")			\
9862de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_COMDEF,          0x80000000UL,			\
9872de3b87aSKai Wang 	"section may be multiply defined in input to link step (ARM)")	\
9882de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_MIPS_GPREL,      0x10000000UL,			\
9892de3b87aSKai Wang 	"section must be part of global data area")			\
9902de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_MIPS_MERGE,      0x20000000UL,			\
9912de3b87aSKai Wang 	"section data should be merged to eliminate duplication")	\
9922de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_MIPS_ADDR,       0x40000000UL,			\
9932de3b87aSKai Wang 	"section data is addressed by default")				\
9942de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_MIPS_STRING,     0x80000000UL,			\
9952de3b87aSKai Wang 	"section data is string data by default")			\
9962de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_MIPS_NOSTRIP,    0x08000000UL,			\
9972de3b87aSKai Wang 	"section data may not be stripped")				\
9982de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_MIPS_LOCAL,      0x04000000UL,			\
9992de3b87aSKai Wang 	"section data local to process")				\
10002de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_MIPS_NAMES,      0x02000000UL,			\
10012de3b87aSKai Wang 	"linker must generate implicit hidden weak names")		\
10022de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_MIPS_NODUPE,     0x01000000UL,			\
10032de3b87aSKai Wang 	"linker must retain only one copy")				\
10042de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_ORDERED,         0x40000000UL,			\
10052de3b87aSKai Wang 	"section is ordered with respect to other sections")		\
10062de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_EXCLUDE,	     0x80000000UL,			\
10072de3b87aSKai Wang 	"section is excluded from executables and shared objects")	\
10082de3b87aSKai Wang _ELF_DEFINE_SHF(SHF_MASKPROC,        0xF0000000UL,			\
10092de3b87aSKai Wang 	"bits reserved for processor-specific semantics")
10102de3b87aSKai Wang 
10112de3b87aSKai Wang #undef	_ELF_DEFINE_SHF
10122de3b87aSKai Wang #define	_ELF_DEFINE_SHF(N, V, DESCR)	N = V ,
10132de3b87aSKai Wang enum {
10142de3b87aSKai Wang 	_ELF_DEFINE_SECTION_FLAGS()
10152de3b87aSKai Wang 	SHF__LAST__
10162de3b87aSKai Wang };
10172de3b87aSKai Wang 
10182de3b87aSKai Wang /*
10192de3b87aSKai Wang  * Special section indices.
10202de3b87aSKai Wang  */
10212de3b87aSKai Wang #define _ELF_DEFINE_SECTION_INDICES()					\
10222de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_UNDEF, 	0, 	 "undefined section")		\
10232de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_LORESERVE, 	0xFF00U, "start of reserved area")	\
10242de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_LOPROC, 	0xFF00U,				\
10252de3b87aSKai Wang 	"start of processor-specific range")				\
10262de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_BEFORE,	0xFF00U, "used for section ordering")	\
10272de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_AFTER,	0xFF01U, "used for section ordering")	\
10282de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_AMD64_LCOMMON, 0xFF02U, "large common block label") \
10292de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_MIPS_ACOMMON, 0xFF00U,				\
10302de3b87aSKai Wang 	"allocated common symbols in a DSO")				\
10312de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_MIPS_TEXT,	0xFF01U, "Reserved (obsolete)")		\
10322de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_MIPS_DATA,	0xFF02U, "Reserved (obsolete)")		\
10332de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_MIPS_SCOMMON, 0xFF03U,				\
10342de3b87aSKai Wang 	"gp-addressable common symbols")				\
10352de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_MIPS_SUNDEFINED, 0xFF04U,				\
10362de3b87aSKai Wang 	"gp-addressable undefined symbols")				\
10372de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_MIPS_LCOMMON, 0xFF05U, "local common symbols")	\
10382de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_MIPS_LUNDEFINED, 0xFF06U,				\
10392de3b87aSKai Wang 	"local undefined symbols")					\
10402de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_HIPROC, 	0xFF1FU,				\
10412de3b87aSKai Wang 	"end of processor-specific range")				\
10422de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_LOOS, 	0xFF20U,				\
10432de3b87aSKai Wang 	"start of OS-specific range")					\
10442de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_SUNW_IGNORE, 0xFF3FU, "used by dtrace")		\
10452de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_HIOS, 	0xFF3FU,				\
10462de3b87aSKai Wang 	"end of OS-specific range")					\
10472de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_ABS, 	0xFFF1U, "absolute references")		\
10482de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_COMMON, 	0xFFF2U, "references to COMMON areas")	\
10492de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_XINDEX, 	0xFFFFU, "extended index")		\
10502de3b87aSKai Wang _ELF_DEFINE_SHN(SHN_HIRESERVE, 	0xFFFFU, "end of reserved area")
10512de3b87aSKai Wang 
10522de3b87aSKai Wang #undef	_ELF_DEFINE_SHN
10532de3b87aSKai Wang #define	_ELF_DEFINE_SHN(N, V, DESCR)	N = V ,
10542de3b87aSKai Wang enum {
10552de3b87aSKai Wang 	_ELF_DEFINE_SECTION_INDICES()
10562de3b87aSKai Wang 	SHN__LAST__
10572de3b87aSKai Wang };
10582de3b87aSKai Wang 
10592de3b87aSKai Wang /*
10602de3b87aSKai Wang  * Section types.
10612de3b87aSKai Wang  */
10622de3b87aSKai Wang 
10632de3b87aSKai Wang #define	_ELF_DEFINE_SECTION_TYPES()					\
10642de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_NULL,            0, "inactive header")		\
10652de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_PROGBITS,        1, "program defined information")	\
10662de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_SYMTAB,          2, "symbol table")			\
10672de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_STRTAB,          3, "string table")			\
10682de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_RELA,            4,					\
10692de3b87aSKai Wang 	"relocation entries with addends")				\
10702de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_HASH,            5, "symbol hash table")		\
10712de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_DYNAMIC,         6,					\
10722de3b87aSKai Wang 	"information for dynamic linking")				\
10732de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_NOTE,            7, "additional notes")		\
10742de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_NOBITS,          8, "section occupying no space")	\
10752de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_REL,             9,					\
10762de3b87aSKai Wang 	"relocation entries without addends")				\
10772de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_SHLIB,           10, "reserved")			\
10782de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_DYNSYM,          11, "symbol table")		\
10792de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_INIT_ARRAY,      14,				\
10802de3b87aSKai Wang 	"pointers to initialization functions")				\
10812de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_FINI_ARRAY,      15,				\
10822de3b87aSKai Wang 	"pointers to termination functions")				\
10832de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_PREINIT_ARRAY,   16,				\
10842de3b87aSKai Wang 	"pointers to functions called before initialization")		\
10852de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_GROUP,           17, "defines a section group")	\
10862de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_SYMTAB_SHNDX,    18,				\
10872de3b87aSKai Wang 	"used for extended section numbering")				\
10882de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_LOOS,            0x60000000UL,			\
10892de3b87aSKai Wang 	"start of OS-specific range")					\
10902de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_SUNW_dof,	     0x6FFFFFF4UL,			\
10912de3b87aSKai Wang 	"used by dtrace")						\
10922de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_SUNW_cap,	     0x6FFFFFF5UL,			\
10932de3b87aSKai Wang 	"capability requirements")					\
10942de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_GNU_ATTRIBUTES,  0x6FFFFFF5UL,			\
10952de3b87aSKai Wang 	"object attributes")						\
10962de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_SUNW_SIGNATURE,  0x6FFFFFF6UL,			\
10972de3b87aSKai Wang 	"module verification signature")				\
10982de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_GNU_HASH,	     0x6FFFFFF6UL,			\
10992de3b87aSKai Wang 	"GNU Hash sections")						\
11002de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_GNU_LIBLIST,     0x6FFFFFF7UL,			\
11012de3b87aSKai Wang 	"List of libraries to be prelinked")				\
11022de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_SUNW_ANNOTATE,   0x6FFFFFF7UL,			\
11032de3b87aSKai Wang 	"special section where unresolved references are allowed")	\
11042de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_SUNW_DEBUGSTR,   0x6FFFFFF8UL,			\
11052de3b87aSKai Wang 	"debugging information")					\
11062de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_CHECKSUM, 	     0x6FFFFFF8UL,			\
11072de3b87aSKai Wang 	"checksum for dynamic shared objects")				\
11082de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_SUNW_DEBUG,      0x6FFFFFF9UL,			\
11092de3b87aSKai Wang 	"debugging information")					\
11102de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_SUNW_move,       0x6FFFFFFAUL,			\
11112de3b87aSKai Wang 	"information to handle partially initialized symbols")		\
11122de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_SUNW_COMDAT,     0x6FFFFFFBUL,			\
11132de3b87aSKai Wang 	"section supporting merging of multiple copies of data")	\
11142de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_SUNW_syminfo,    0x6FFFFFFCUL,			\
11152de3b87aSKai Wang 	"additional symbol information")				\
11162de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_SUNW_verdef,     0x6FFFFFFDUL,			\
11172de3b87aSKai Wang 	"symbol versioning information")				\
11182de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_SUNW_verneed,    0x6FFFFFFEUL,			\
11192de3b87aSKai Wang 	"symbol versioning requirements")				\
11202de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_SUNW_versym,     0x6FFFFFFFUL,			\
11212de3b87aSKai Wang 	"symbol versioning table")					\
11222de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_HIOS,            0x6FFFFFFFUL,			\
11232de3b87aSKai Wang 	"end of OS-specific range")					\
11242de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_LOPROC,          0x70000000UL,			\
11252de3b87aSKai Wang 	"start of processor-specific range")				\
11262de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_ARM_EXIDX,       0x70000001UL,			\
11272de3b87aSKai Wang 	"exception index table")					\
11282de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_ARM_PREEMPTMAP,  0x70000002UL,			\
11292de3b87aSKai Wang 	"BPABI DLL dynamic linking preemption map")			\
11302de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_ARM_ATTRIBUTES,  0x70000003UL,			\
11312de3b87aSKai Wang 	"object file compatibility attributes")				\
11322de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_ARM_DEBUGOVERLAY, 0x70000004UL,			\
11332de3b87aSKai Wang 	"overlay debug information")					\
11342de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_ARM_OVERLAYSECTION, 0x70000005UL,			\
11352de3b87aSKai Wang 	"overlay debug information")					\
11362de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_LIBLIST,    0x70000000UL,			\
11372de3b87aSKai Wang 	"DSO library information used in link")				\
11382de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_MSYM,       0x70000001UL,			\
11392de3b87aSKai Wang 	"MIPS symbol table extension")					\
11402de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_CONFLICT,   0x70000002UL,			\
11412de3b87aSKai Wang 	"symbol conflicting with DSO-defined symbols ")			\
11422de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_GPTAB,      0x70000003UL,			\
11432de3b87aSKai Wang 	"global pointer table")						\
11442de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_UCODE,      0x70000004UL,			\
11452de3b87aSKai Wang 	"reserved")							\
11462de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_DEBUG,      0x70000005UL,			\
11472de3b87aSKai Wang 	"reserved (obsolete debug information)")			\
11482de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_REGINFO,    0x70000006UL,			\
11492de3b87aSKai Wang 	"register usage information")					\
11502de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_PACKAGE,    0x70000007UL,			\
11512de3b87aSKai Wang 	"OSF reserved")							\
11522de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_PACKSYM,    0x70000008UL,			\
11532de3b87aSKai Wang 	"OSF reserved")							\
11542de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_RELD,       0x70000009UL,			\
11552de3b87aSKai Wang 	"dynamic relocation")						\
11562de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_IFACE,      0x7000000BUL,			\
11572de3b87aSKai Wang 	"subprogram interface information")				\
11582de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_CONTENT,    0x7000000CUL,			\
11592de3b87aSKai Wang 	"section content classification")				\
11602de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_OPTIONS,     0x7000000DUL,			\
11612de3b87aSKai Wang 	"general options")						\
11622de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_DELTASYM,   0x7000001BUL,			\
11632de3b87aSKai Wang 	"Delta C++: symbol table")					\
11642de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_DELTAINST,  0x7000001CUL,			\
11652de3b87aSKai Wang 	"Delta C++: instance table")					\
11662de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_DELTACLASS, 0x7000001DUL,			\
11672de3b87aSKai Wang 	"Delta C++: class table")					\
11682de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_DWARF,      0x7000001EUL,			\
11692de3b87aSKai Wang 	"DWARF debug information")					\
11702de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_DELTADECL,  0x7000001FUL,			\
11712de3b87aSKai Wang 	"Delta C++: declarations")					\
11722de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_SYMBOL_LIB, 0x70000020UL,			\
11732de3b87aSKai Wang 	"symbol-to-library mapping")					\
11742de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_EVENTS,     0x70000021UL,			\
11752de3b87aSKai Wang 	"event locations")						\
11762de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_TRANSLATE,  0x70000022UL,			\
11772de3b87aSKai Wang 	"???")								\
11782de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_PIXIE,      0x70000023UL,			\
11792de3b87aSKai Wang 	"special pixie sections")					\
11802de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_XLATE,      0x70000024UL,			\
11812de3b87aSKai Wang 	"address translation table")					\
11822de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_XLATE_DEBUG, 0x70000025UL,			\
11832de3b87aSKai Wang 	"SGI internal address translation table")			\
11842de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_WHIRL,      0x70000026UL,			\
11852de3b87aSKai Wang 	"intermediate code")						\
11862de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_EH_REGION,  0x70000027UL,			\
11872de3b87aSKai Wang 	"C++ exception handling region info")				\
11882de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_XLATE_OLD,  0x70000028UL,			\
11892de3b87aSKai Wang 	"obsolete")							\
11902de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_MIPS_PDR_EXCEPTION, 0x70000029UL,			\
11912de3b87aSKai Wang 	"runtime procedure descriptor table exception information")	\
1192656f49f8SEd Maste _ELF_DEFINE_SHT(SHT_MIPS_ABIFLAGS,   0x7000002AUL,			\
1193656f49f8SEd Maste 	"ABI flags")							\
11942de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_SPARC_GOTDATA,   0x70000000UL,			\
11952de3b87aSKai Wang 	"SPARC-specific data")						\
11962de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_AMD64_UNWIND,    0x70000001UL,			\
11972de3b87aSKai Wang 	"unwind tables for the AMD64")					\
11982de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_ORDERED,         0x7FFFFFFFUL,			\
11992de3b87aSKai Wang 	"sort entries in the section")					\
12002de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_HIPROC,          0x7FFFFFFFUL,			\
12012de3b87aSKai Wang 	"end of processor-specific range")				\
12022de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_LOUSER,          0x80000000UL,			\
12032de3b87aSKai Wang 	"start of application-specific range")				\
12042de3b87aSKai Wang _ELF_DEFINE_SHT(SHT_HIUSER,          0xFFFFFFFFUL,			\
12052de3b87aSKai Wang 	"end of application-specific range")
12062de3b87aSKai Wang 
12072de3b87aSKai Wang #undef	_ELF_DEFINE_SHT
12082de3b87aSKai Wang #define	_ELF_DEFINE_SHT(N, V, DESCR)	N = V ,
12092de3b87aSKai Wang enum {
12102de3b87aSKai Wang 	_ELF_DEFINE_SECTION_TYPES()
12112de3b87aSKai Wang 	SHT__LAST__ = SHT_HIUSER
12122de3b87aSKai Wang };
12132de3b87aSKai Wang 
12142de3b87aSKai Wang /* Aliases for section types. */
12152de3b87aSKai Wang #define	SHT_GNU_verdef		SHT_SUNW_verdef
12162de3b87aSKai Wang #define	SHT_GNU_verneed		SHT_SUNW_verneed
12172de3b87aSKai Wang #define	SHT_GNU_versym		SHT_SUNW_versym
12182de3b87aSKai Wang 
12192de3b87aSKai Wang /*
12202de3b87aSKai Wang  * Symbol binding information.
12212de3b87aSKai Wang  */
12222de3b87aSKai Wang 
12232de3b87aSKai Wang #define	_ELF_DEFINE_SYMBOL_BINDING()					\
12242de3b87aSKai Wang _ELF_DEFINE_STB(STB_LOCAL,           0,					\
12252de3b87aSKai Wang 	"not visible outside defining object file")			\
12262de3b87aSKai Wang _ELF_DEFINE_STB(STB_GLOBAL,          1,					\
12272de3b87aSKai Wang 	"visible across all object files being combined")		\
12282de3b87aSKai Wang _ELF_DEFINE_STB(STB_WEAK,            2,					\
12292de3b87aSKai Wang 	"visible across all object files but with low precedence")	\
12302de3b87aSKai Wang _ELF_DEFINE_STB(STB_LOOS,            10, "start of OS-specific range")	\
1231*839529caSEd Maste _ELF_DEFINE_STB(STB_GNU_UNIQUE,      10, "unique symbol (GNU)")		\
12322de3b87aSKai Wang _ELF_DEFINE_STB(STB_HIOS,            12, "end of OS-specific range")	\
12332de3b87aSKai Wang _ELF_DEFINE_STB(STB_LOPROC,          13,				\
12342de3b87aSKai Wang 	"start of processor-specific range")				\
12352de3b87aSKai Wang _ELF_DEFINE_STB(STB_HIPROC,          15,				\
12362de3b87aSKai Wang 	"end of processor-specific range")
12372de3b87aSKai Wang 
12382de3b87aSKai Wang #undef	_ELF_DEFINE_STB
12392de3b87aSKai Wang #define	_ELF_DEFINE_STB(N, V, DESCR)	N = V ,
12402de3b87aSKai Wang enum {
12412de3b87aSKai Wang 	_ELF_DEFINE_SYMBOL_BINDING()
12422de3b87aSKai Wang 	STB__LAST__
12432de3b87aSKai Wang };
12442de3b87aSKai Wang 
12452de3b87aSKai Wang /*
12462de3b87aSKai Wang  * Symbol types
12472de3b87aSKai Wang  */
12482de3b87aSKai Wang 
12492de3b87aSKai Wang #define	_ELF_DEFINE_SYMBOL_TYPES()					\
12502de3b87aSKai Wang _ELF_DEFINE_STT(STT_NOTYPE,          0, "unspecified type")		\
12512de3b87aSKai Wang _ELF_DEFINE_STT(STT_OBJECT,          1, "data object")			\
12522de3b87aSKai Wang _ELF_DEFINE_STT(STT_FUNC,            2, "executable code")		\
12532de3b87aSKai Wang _ELF_DEFINE_STT(STT_SECTION,         3, "section")			\
12542de3b87aSKai Wang _ELF_DEFINE_STT(STT_FILE,            4, "source file")			\
12552de3b87aSKai Wang _ELF_DEFINE_STT(STT_COMMON,          5, "uninitialized common block")	\
12562de3b87aSKai Wang _ELF_DEFINE_STT(STT_TLS,             6, "thread local storage")		\
12572de3b87aSKai Wang _ELF_DEFINE_STT(STT_LOOS,            10, "start of OS-specific types")	\
12582de3b87aSKai Wang _ELF_DEFINE_STT(STT_HIOS,            12, "end of OS-specific types")	\
12592de3b87aSKai Wang _ELF_DEFINE_STT(STT_LOPROC,          13,				\
12602de3b87aSKai Wang 	"start of processor-specific types")				\
12612de3b87aSKai Wang _ELF_DEFINE_STT(STT_ARM_TFUNC,       13, "Thumb function (GNU)")	\
12622de3b87aSKai Wang _ELF_DEFINE_STT(STT_ARM_16BIT,       15, "Thumb label (GNU)")		\
1263*839529caSEd Maste _ELF_DEFINE_STT(STT_SPARC_REGISTER,  13, "SPARC register information")	\
12642de3b87aSKai Wang _ELF_DEFINE_STT(STT_HIPROC,          15,				\
12652de3b87aSKai Wang 	"end of processor-specific types")
12662de3b87aSKai Wang 
12672de3b87aSKai Wang #undef	_ELF_DEFINE_STT
12682de3b87aSKai Wang #define	_ELF_DEFINE_STT(N, V, DESCR)	N = V ,
12692de3b87aSKai Wang enum {
12702de3b87aSKai Wang 	_ELF_DEFINE_SYMBOL_TYPES()
12712de3b87aSKai Wang 	STT__LAST__
12722de3b87aSKai Wang };
12732de3b87aSKai Wang 
12742de3b87aSKai Wang /*
12752de3b87aSKai Wang  * Symbol binding.
12762de3b87aSKai Wang  */
12772de3b87aSKai Wang 
12782de3b87aSKai Wang #define	_ELF_DEFINE_SYMBOL_BINDING_KINDS()		\
12792de3b87aSKai Wang _ELF_DEFINE_SYB(SYMINFO_BT_SELF,	0xFFFFU,	\
12802de3b87aSKai Wang 	"bound to self")				\
12812de3b87aSKai Wang _ELF_DEFINE_SYB(SYMINFO_BT_PARENT,	0xFFFEU,	\
12822de3b87aSKai Wang 	"bound to parent")				\
12832de3b87aSKai Wang _ELF_DEFINE_SYB(SYMINFO_BT_NONE,	0xFFFDU,	\
12842de3b87aSKai Wang 	"no special binding")
12852de3b87aSKai Wang 
12862de3b87aSKai Wang #undef	_ELF_DEFINE_SYB
12872de3b87aSKai Wang #define	_ELF_DEFINE_SYB(N, V, DESCR)	N = V ,
12882de3b87aSKai Wang enum {
12892de3b87aSKai Wang 	_ELF_DEFINE_SYMBOL_BINDING_KINDS()
12902de3b87aSKai Wang 	SYMINFO__LAST__
12912de3b87aSKai Wang };
12922de3b87aSKai Wang 
12932de3b87aSKai Wang /*
12942de3b87aSKai Wang  * Symbol visibility.
12952de3b87aSKai Wang  */
12962de3b87aSKai Wang 
12972de3b87aSKai Wang #define	_ELF_DEFINE_SYMBOL_VISIBILITY()		\
12982de3b87aSKai Wang _ELF_DEFINE_STV(STV_DEFAULT,         0,		\
12992de3b87aSKai Wang 	"as specified by symbol type")		\
13002de3b87aSKai Wang _ELF_DEFINE_STV(STV_INTERNAL,        1,		\
13012de3b87aSKai Wang 	"as defined by processor semantics")	\
13022de3b87aSKai Wang _ELF_DEFINE_STV(STV_HIDDEN,          2,		\
13032de3b87aSKai Wang 	"hidden from other components")		\
13042de3b87aSKai Wang _ELF_DEFINE_STV(STV_PROTECTED,       3,		\
13052de3b87aSKai Wang 	"local references are not preemptable")
13062de3b87aSKai Wang 
13072de3b87aSKai Wang #undef	_ELF_DEFINE_STV
13082de3b87aSKai Wang #define	_ELF_DEFINE_STV(N, V, DESCR)	N = V ,
13092de3b87aSKai Wang enum {
13102de3b87aSKai Wang 	_ELF_DEFINE_SYMBOL_VISIBILITY()
13112de3b87aSKai Wang 	STV__LAST__
13122de3b87aSKai Wang };
13132de3b87aSKai Wang 
13142de3b87aSKai Wang /*
13152de3b87aSKai Wang  * Symbol flags.
13162de3b87aSKai Wang  */
13172de3b87aSKai Wang #define	_ELF_DEFINE_SYMBOL_FLAGS()		\
13182de3b87aSKai Wang _ELF_DEFINE_SYF(SYMINFO_FLG_DIRECT,	0x01,	\
13192de3b87aSKai Wang 	"directly assocated reference")		\
13202de3b87aSKai Wang _ELF_DEFINE_SYF(SYMINFO_FLG_COPY,	0x04,	\
13212de3b87aSKai Wang 	"definition by copy-relocation")	\
13222de3b87aSKai Wang _ELF_DEFINE_SYF(SYMINFO_FLG_LAZYLOAD,	0x08,	\
13232de3b87aSKai Wang 	"object should be lazily loaded")	\
13242de3b87aSKai Wang _ELF_DEFINE_SYF(SYMINFO_FLG_DIRECTBIND,	0x10,	\
13252de3b87aSKai Wang 	"reference should be directly bound")	\
13262de3b87aSKai Wang _ELF_DEFINE_SYF(SYMINFO_FLG_NOEXTDIRECT, 0x20,	\
13272de3b87aSKai Wang 	"external references not allowed to bind to definition")
13282de3b87aSKai Wang 
13292de3b87aSKai Wang #undef	_ELF_DEFINE_SYF
13302de3b87aSKai Wang #define	_ELF_DEFINE_SYF(N, V, DESCR)	N = V ,
13312de3b87aSKai Wang enum {
13322de3b87aSKai Wang 	_ELF_DEFINE_SYMBOL_FLAGS()
13332de3b87aSKai Wang 	SYMINFO_FLG__LAST__
13342de3b87aSKai Wang };
13352de3b87aSKai Wang 
13362de3b87aSKai Wang /*
13372de3b87aSKai Wang  * Version dependencies.
13382de3b87aSKai Wang  */
13392de3b87aSKai Wang #define	_ELF_DEFINE_VERSIONING_DEPENDENCIES()			\
13402de3b87aSKai Wang _ELF_DEFINE_VERD(VER_NDX_LOCAL,		0,	"local scope")	\
13412de3b87aSKai Wang _ELF_DEFINE_VERD(VER_NDX_GLOBAL,	1,	"global scope")
13422de3b87aSKai Wang #undef	_ELF_DEFINE_VERD
13432de3b87aSKai Wang #define	_ELF_DEFINE_VERD(N, V, DESCR)	N = V ,
13442de3b87aSKai Wang enum {
13452de3b87aSKai Wang 	_ELF_DEFINE_VERSIONING_DEPENDENCIES()
13462de3b87aSKai Wang 	VER_NDX__LAST__
13472de3b87aSKai Wang };
13482de3b87aSKai Wang 
13492de3b87aSKai Wang /*
13502de3b87aSKai Wang  * Version flags.
13512de3b87aSKai Wang  */
13522de3b87aSKai Wang #define	_ELF_DEFINE_VERSIONING_FLAGS()				\
13532de3b87aSKai Wang _ELF_DEFINE_VERF(VER_FLG_BASE,		0x1,	"file version") \
13542de3b87aSKai Wang _ELF_DEFINE_VERF(VER_FLG_WEAK,		0x2,	"weak version")
13552de3b87aSKai Wang #undef	_ELF_DEFINE_VERF
13562de3b87aSKai Wang #define	_ELF_DEFINE_VERF(N, V, DESCR)	N = V ,
13572de3b87aSKai Wang enum {
13582de3b87aSKai Wang 	_ELF_DEFINE_VERSIONING_FLAGS()
13592de3b87aSKai Wang 	VER_FLG__LAST__
13602de3b87aSKai Wang };
13612de3b87aSKai Wang 
13622de3b87aSKai Wang /*
13632de3b87aSKai Wang  * Version needs
13642de3b87aSKai Wang  */
13652de3b87aSKai Wang #define	_ELF_DEFINE_VERSIONING_NEEDS()					\
13662de3b87aSKai Wang _ELF_DEFINE_VRN(VER_NEED_NONE,		0,	"invalid version")	\
13672de3b87aSKai Wang _ELF_DEFINE_VRN(VER_NEED_CURRENT,	1,	"current version")
13682de3b87aSKai Wang #undef	_ELF_DEFINE_VRN
13692de3b87aSKai Wang #define	_ELF_DEFINE_VRN(N, V, DESCR)	N = V ,
13702de3b87aSKai Wang enum {
13712de3b87aSKai Wang 	_ELF_DEFINE_VERSIONING_NEEDS()
13722de3b87aSKai Wang 	VER_NEED__LAST__
13732de3b87aSKai Wang };
13742de3b87aSKai Wang 
13752de3b87aSKai Wang /*
13762de3b87aSKai Wang  * Version numbers.
13772de3b87aSKai Wang  */
13782de3b87aSKai Wang #define	_ELF_DEFINE_VERSIONING_NUMBERS()				\
13792de3b87aSKai Wang _ELF_DEFINE_VRNU(VER_DEF_NONE,		0,	"invalid version")	\
13802de3b87aSKai Wang _ELF_DEFINE_VRNU(VER_DEF_CURRENT,	1, 	"current version")
13812de3b87aSKai Wang #undef	_ELF_DEFINE_VRNU
13822de3b87aSKai Wang #define	_ELF_DEFINE_VRNU(N, V, DESCR)	N = V ,
13832de3b87aSKai Wang enum {
13842de3b87aSKai Wang 	_ELF_DEFINE_VERSIONING_NUMBERS()
13852de3b87aSKai Wang 	VER_DEF__LAST__
13862de3b87aSKai Wang };
13872de3b87aSKai Wang 
13882de3b87aSKai Wang /**
13892de3b87aSKai Wang  ** Relocation types.
13902de3b87aSKai Wang  **/
13912de3b87aSKai Wang 
13922de3b87aSKai Wang #define	_ELF_DEFINE_386_RELOCATIONS()		\
13932de3b87aSKai Wang _ELF_DEFINE_RELOC(R_386_NONE,		0)	\
13942de3b87aSKai Wang _ELF_DEFINE_RELOC(R_386_32,		1)	\
13952de3b87aSKai Wang _ELF_DEFINE_RELOC(R_386_PC32,		2)	\
13962de3b87aSKai Wang _ELF_DEFINE_RELOC(R_386_GOT32,		3)	\
13972de3b87aSKai Wang _ELF_DEFINE_RELOC(R_386_PLT32,		4)	\
13982de3b87aSKai Wang _ELF_DEFINE_RELOC(R_386_COPY,		5)	\
13992de3b87aSKai Wang _ELF_DEFINE_RELOC(R_386_GLOB_DAT,	6)	\
1400*839529caSEd Maste _ELF_DEFINE_RELOC(R_386_JUMP_SLOT,	7)	\
14012de3b87aSKai Wang _ELF_DEFINE_RELOC(R_386_RELATIVE,	8)	\
14022de3b87aSKai Wang _ELF_DEFINE_RELOC(R_386_GOTOFF,		9)	\
14032de3b87aSKai Wang _ELF_DEFINE_RELOC(R_386_GOTPC,		10)	\
14042de3b87aSKai Wang _ELF_DEFINE_RELOC(R_386_32PLT,		11)	\
14052de3b87aSKai Wang _ELF_DEFINE_RELOC(R_386_16,		20)	\
14062de3b87aSKai Wang _ELF_DEFINE_RELOC(R_386_PC16,		21)	\
14072de3b87aSKai Wang _ELF_DEFINE_RELOC(R_386_8,		22)	\
14082de3b87aSKai Wang _ELF_DEFINE_RELOC(R_386_PC8,		23)
14092de3b87aSKai Wang 
14102de3b87aSKai Wang /*
141171a0c925SEd Maste  */
141271a0c925SEd Maste #define	_ELF_DEFINE_AARCH64_RELOCATIONS()				\
1413*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_NONE,				0)	\
141471a0c925SEd Maste _ELF_DEFINE_RELOC(R_AARCH64_ABS64,				257)	\
141571a0c925SEd Maste _ELF_DEFINE_RELOC(R_AARCH64_ABS32,				258)	\
1416*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_ABS16,				259)	\
1417*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_PREL64,				260)	\
1418*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_PREL32,				261)	\
1419*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_PREL16,				262)	\
1420*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_UABS_G0,			263)	\
1421*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_UABS_G0_NC,			264)	\
1422*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_UABS_G1,			265)	\
1423*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_UABS_G1_NC,			266)	\
1424*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_UABS_G2,			267)	\
1425*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_UABS_G2_NC,			268)	\
1426*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_UABS_G3,			269)	\
1427*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_SABS_G0,			270)	\
1428*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_SABS_G1,			271)	\
1429*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_SABS_G2,			272)	\
1430*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_LD_PREL_LO19,			273)	\
1431*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_ADR_PREL_LO21,			274)	\
1432*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_ADR_PREL_PG_HI21,			275)	\
1433*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_ADR_PREL_PG_HI21_NC,		276)	\
1434*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_ADD_ABS_LO12_NC,			277)	\
1435*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_LDST8_ABS_LO12_NC,			278)	\
1436*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TSTBR14,				279)	\
1437*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_CONDBR19,				280)	\
1438*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_JUMP26,				282)	\
1439*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_CALL26,				283)	\
1440*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_LDST16_ABS_LO12_NC,			284)	\
1441*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_LDST32_ABS_LO12_NC,			285)	\
1442*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_LDST64_ABS_LO12_NC,			286)	\
1443*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_PREL_G0,			287)	\
1444*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_PREL_G0_NC,			288)	\
1445*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_PREL_G1,			289)	\
1446*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_PREL_G1_NC,			290)	\
1447*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_PREL_G2,			291)	\
1448*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_PREL_G2_NC,			292)	\
1449*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_PREL_G3,			293)	\
1450*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_LDST128_ABS_LO12_NC,		299)	\
1451*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_GOTOFF_G0,			300)	\
1452*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_GOTOFF_G0_NC,			301)	\
1453*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_GOTOFF_G1,			302)	\
1454*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_GOTOFF_G1_NC,			303)	\
1455*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_GOTOFF_G2,			304)	\
1456*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_GOTOFF_G2_NC,			305)	\
1457*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_MOVW_GOTOFF_G3,			306)	\
1458*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_GOTREL64,				307)	\
1459*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_GOTREL32,				308)	\
1460*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_GOT_LD_PREL19,			309)	\
1461*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_LD64_GOTOFF_LO15,			310)	\
1462*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_ADR_GOT_PAGE,			311)	\
1463*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_LD64_GOT_LO12_NC,			312)	\
1464*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_LD64_GOTPAGE_LO15,			313)	\
1465*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSGD_ADR_PREL21,			512)	\
1466*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSGD_ADR_PAGE21,			513)	\
1467*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSGD_ADD_LO12_NC,			514)	\
1468*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSGD_MOVW_G1,			515)	\
1469*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSGD_MOVW_G0_NC,			516)	\
1470*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_ADR_PREL21,			517)	\
1471*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_ADR_PAGE21,			518)	\
1472*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_ADD_LO12_NC,			519)	\
1473*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_MOVW_G1,			520)	\
1474*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_MOVW_G0_NC,			521)	\
1475*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_LD_PREL19,			522)	\
1476*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_MOVW_DTPREL_G2,		523)	\
1477*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_MOVW_DTPREL_G1,		524)	\
1478*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC,		525)	\
1479*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_MOVW_DTPREL_G0,		526)	\
1480*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC,		527)	\
1481*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_ADD_DTPREL_HI12,		529)	\
1482*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC,		530)	\
1483*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_LDST8_DTPREL_LO12,		531)	\
1484*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC,		532)	\
1485*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_LDST16_DTPREL_LO12,		533)	\
1486*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC,	534)	\
1487*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_LDST32_DTPREL_LO12,		535)	\
1488*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC,	536)	\
1489*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_LDST64_DTPREL_LO12,		537)	\
1490*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC,	538)	\
1491*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSIE_MOVW_GOTTPREL_G1,		539)	\
1492*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC,		540)	\
1493*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21,		541)	\
1494*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC,	542)	\
1495*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSIE_LD_GOTTPREL_PREL19,		543)	\
1496*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G2,		544)	\
1497*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G1,		545)	\
1498*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G1_NC,		546)	\
1499*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G0,		547)	\
1500*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G0_NC,		548)	\
1501*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_ADD_TPREL_HI12,		549)	\
1502*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_ADD_TPREL_LO12,		550)	\
1503*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_ADD_TPREL_LO12_NC,		551)	\
1504*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_LDST8_TPREL_LO12,		552)	\
1505*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC,		553)	\
1506*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_LDST16_TPREL_LO12,		554)	\
1507*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC,		555)	\
1508*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_LDST32_TPREL_LO12,		556)	\
1509*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC,		557)	\
1510*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_LDST64_TPREL_LO12,		558)	\
1511*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC,		559)	\
1512*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSDESC_LD_PREL19,			560)	\
1513*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSDESC_ADR_PREL21,			561)	\
1514*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSDESC_ADR_PAGE21,			562)	\
1515*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSDESC_LD64_LO12,			563)	\
1516*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSDESC_ADD_LO12,			564)	\
1517*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSDESC_OFF_G1,			565)	\
1518*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSDESC_OFF_G0_NC,			566)	\
1519*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSDESC_LDR,			567)	\
1520*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSDESC_ADD,			568)	\
1521*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSDESC_CALL,			569)	\
1522*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_LDST128_TPREL_LO12,		570)	\
1523*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC,	571)	\
1524*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_LDST128_DTPREL_LO12,		572)	\
1525*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC,	573)	\
1526*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_COPY,				1024)	\
1527*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_GLOB_DAT,				1025)	\
1528*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_JUMP_SLOT,				1026)	\
1529*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_RELATIVE,				1027)	\
1530*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLS_DTPREL64,			1028)	\
1531*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLS_DTPMOD64,			1029)	\
1532*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLS_TPREL64,			1030)	\
1533*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_TLSDESC,				1031)	\
1534*839529caSEd Maste _ELF_DEFINE_RELOC(R_AARCH64_IRELATIVE,				1032)
153571a0c925SEd Maste 
153671a0c925SEd Maste /*
15372de3b87aSKai Wang  * These are the symbols used in the Sun ``Linkers and Loaders
15382de3b87aSKai Wang  * Guide'', Document No: 817-1984-17.  See the X86_64 relocations list
15392de3b87aSKai Wang  * below for the spellings used in the ELF specification.
15402de3b87aSKai Wang  */
15412de3b87aSKai Wang #define	_ELF_DEFINE_AMD64_RELOCATIONS()		\
15422de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_NONE,		0)	\
15432de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_64,		1)	\
15442de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_PC32,		2)	\
15452de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_GOT32,	3)	\
15462de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_PLT32,	4)	\
15472de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_COPY,		5)	\
15482de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_GLOB_DAT,	6)	\
15492de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_JUMP_SLOT,	7)	\
15502de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_RELATIVE,	8)	\
15512de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_GOTPCREL,	9)	\
15522de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_32,		10)	\
15532de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_32S,		11)	\
15542de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_16,		12)	\
15552de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_PC16,		13)	\
15562de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_8,		14)	\
15572de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_PC8,		15)	\
15582de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_PC64,		24)	\
15592de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_GOTOFF64,	25)	\
15602de3b87aSKai Wang _ELF_DEFINE_RELOC(R_AMD64_GOTPC32,	26)
15612de3b87aSKai Wang 
15622de3b87aSKai Wang /*
15632de3b87aSKai Wang  * Relocation definitions from the ARM ELF ABI, version "ARM IHI
15642de3b87aSKai Wang  * 0044E" released on 30th November 2012.
15652de3b87aSKai Wang  */
15662de3b87aSKai Wang #define	_ELF_DEFINE_ARM_RELOCATIONS()			\
15672de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_NONE,			0)	\
15682de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PC24,			1)	\
15692de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ABS32,			2)	\
15702de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_REL32,			3)	\
15712de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDR_PC_G0,		4)	\
15722de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ABS16,			5)	\
15732de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ABS12,			6)	\
15742de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_ABS5,		7)	\
15752de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ABS8,			8)	\
15762de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_SBREL32,		9)	\
15772de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_CALL,		10)	\
15782de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_PC8,		11)	\
15792de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_BREL_ADJ,		12)	\
15802de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_SWI24,			13)	\
15812de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_TLS_DESC,		13)	\
15822de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_SWI8,		14)	\
15832de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_XPC25,			15)	\
15842de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_XPC22,		16)	\
15852de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_TLS_DTPMOD32,		17)	\
15862de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_TLS_DTPOFF32,		18)	\
15872de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_TLS_TPOFF32,		19)	\
15882de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_COPY,			20)	\
15892de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_GLOB_DAT,		21)	\
15902de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_JUMP_SLOT,		22)	\
15912de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_RELATIVE,		23)	\
15922de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_GOTOFF32,		24)	\
15932de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_BASE_PREL,		25)	\
15942de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_GOT_BREL,		26)	\
15952de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PLT32,			27)	\
15962de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_CALL,			28)	\
15972de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_JUMP24,			29)	\
15982de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_JUMP24,		30)	\
15992de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_BASE_ABS,		31)	\
16002de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ALU_PCREL_7_0,		32)	\
16012de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ALU_PCREL_15_8,		33)	\
16022de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ALU_PCREL_23_15,	34)	\
16032de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDR_SBREL_11_0_NC,	35)	\
16042de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ALU_SBREL_19_12_NC,	36)	\
16052de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ALU_SBREL_27_20_CK,	37)	\
16062de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_TARGET1,		38)	\
16072de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_SBREL31,		39)	\
16082de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_V4BX,			40)	\
16092de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_TARGET2,		41)	\
16102de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PREL31,			42)	\
16112de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_MOVW_ABS_NC,		43)	\
16122de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_MOVT_ABS,		44)	\
16132de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_MOVW_PREL_NC,		45)	\
16142de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_MOVT_PREL,		46)	\
16152de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_MOVW_ABS_NC,	47)	\
16162de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_MOVT_ABS,		48)	\
16172de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_MOVW_PREL_NC,	49)	\
16182de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_MOVT_PREL,		50)	\
16192de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_JUMP19,		51)	\
16202de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_JUMP6,		52)	\
16212de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_ALU_PREL_11_0,	53)	\
16222de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_PC12,		54)	\
16232de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ABS32_NOI,		55)	\
16242de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_REL32_NOI,		56)	\
16252de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ALU_PC_G0_NC,		57)	\
16262de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ALU_PC_G0,		58)	\
16272de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ALU_PC_G1_NC,		59)	\
16282de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ALU_PC_G1,		60)	\
16292de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ALU_PC_G2,		61)	\
16302de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDR_PC_G1,		62)	\
16312de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDR_PC_G2,		63)	\
16322de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDRS_PC_G0,		64)	\
16332de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDRS_PC_G1,		65)	\
16342de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDRS_PC_G2,		66)	\
16352de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDC_PC_G0,		67)	\
16362de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDC_PC_G1,		68)	\
16372de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDC_PC_G2,		69)	\
16382de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ALU_SB_G0_NC,		70)	\
16392de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ALU_SB_G0,		71)	\
16402de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ALU_SB_G1_NC,		72)	\
16412de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ALU_SB_G1,		73)	\
16422de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ALU_SB_G2,		74)	\
16432de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDR_SB_G0,		75)	\
16442de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDR_SB_G1,		76)	\
16452de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDR_SB_G2,		77)	\
16462de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDRS_SB_G0,		78)	\
16472de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDRS_SB_G1,		79)	\
16482de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDRS_SB_G2,		80)	\
16492de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDC_SB_G0,		81)	\
16502de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDC_SB_G1,		82)	\
16512de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_LDC_SB_G2,		83)	\
16522de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_MOVW_BREL_NC,		84)	\
16532de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_MOVT_BREL,		85)	\
16542de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_MOVW_BREL,		86)	\
16552de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_MOVW_BREL_NC,	87)	\
16562de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_MOVT_BREL,		88)	\
16572de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_MOVW_BREL,		89)	\
16582de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_TLS_GOTDESC,		90)	\
16592de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_TLS_CALL,		91)	\
16602de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_TLS_DESCSEQ,		92)	\
16612de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_TLS_CALL,		93)	\
16622de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PLT32_ABS,		94)	\
16632de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_GOT_ABS,		95)	\
16642de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_GOT_PREL,		96)	\
16652de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_GOT_BREL12,		97)	\
16662de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_GOTOFF12,		98)	\
16672de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_GOTRELAX,		99)	\
16682de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_GNU_VTENTRY,		100)	\
16692de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_GNU_VTINHERIT,		101)	\
16702de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_JUMP11,		102)	\
16712de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_JUMP8,		103)	\
16722de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_TLS_GD32,		104)	\
16732de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_TLS_LDM32,		105)	\
16742de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_TLS_LDO32,		106)	\
16752de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_TLS_IE32,		107)	\
16762de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_TLS_LE32,		108)	\
16772de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_TLS_LDO12,		109)	\
16782de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_TLS_LE12,		110)	\
16792de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_TLS_IE12GP,		111)	\
16802de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PRIVATE_0,		112)	\
16812de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PRIVATE_1,		113)	\
16822de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PRIVATE_2,		114)	\
16832de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PRIVATE_3,		115)	\
16842de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PRIVATE_4,		116)	\
16852de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PRIVATE_5,		117)	\
16862de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PRIVATE_6,		118)	\
16872de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PRIVATE_7,		119)	\
16882de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PRIVATE_8,		120)	\
16892de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PRIVATE_9,		121)	\
16902de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PRIVATE_10,		122)	\
16912de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PRIVATE_11,		123)	\
16922de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PRIVATE_12,		124)	\
16932de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PRIVATE_13,		125)	\
16942de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PRIVATE_14,		126)	\
16952de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_PRIVATE_15,		127)	\
16962de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_ME_TOO,			128)	\
16972de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_TLS_DESCSEQ16,	129)	\
16982de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_TLS_DESCSEQ32,	130)	\
16992de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_THM_GOT_BREL12,		131)	\
17002de3b87aSKai Wang _ELF_DEFINE_RELOC(R_ARM_IRELATIVE,		140)
17012de3b87aSKai Wang 
17022de3b87aSKai Wang #define	_ELF_DEFINE_IA64_RELOCATIONS()			\
17032de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_NONE,			0)	\
17042de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_IMM14,		0x21)	\
17052de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_IMM22,		0x22)	\
17062de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_IMM64,		0x23)	\
17072de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_DIR32MSB,		0x24)	\
17082de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_DIR32LSB,		0x25)	\
17092de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_DIR64MSB,		0x26)	\
17102de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_DIR64LSB,		0x27)	\
17112de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_GPREL22,		0x2a)	\
17122de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_GPREL64I,		0x2b)	\
17132de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_GPREL32MSB,		0x2c)	\
17142de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_GPREL32LSB,		0x2d)	\
17152de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_GPREL64MSB,		0x2e)	\
17162de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_GPREL64LSB,		0x2f)	\
17172de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_LTOFF22,		0x32)	\
17182de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_LTOFF64I,		0x33)	\
17192de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_PLTOFF22,		0x3a)	\
17202de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_PLTOFF64I,		0x3b)	\
17212de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_PLTOFF64MSB,		0x3e)	\
17222de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_PLTOFF64LSB,		0x3f)	\
17232de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_FPTR64I,		0x43)	\
17242de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_FPTR32MSB,		0x44)	\
17252de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_FPTR32LSB,		0x45)	\
17262de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_FPTR64MSB,		0x46)	\
17272de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_FPTR64LSB,		0x47)	\
17282de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_PCREL60B,		0x48)	\
17292de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_PCREL21B,		0x49)	\
17302de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_PCREL21M,		0x4a)	\
17312de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_PCREL21F,		0x4b)	\
17322de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_PCREL32MSB,		0x4c)	\
17332de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_PCREL32LSB,		0x4d)	\
17342de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_PCREL64MSB,		0x4e)	\
17352de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_PCREL64LSB,		0x4f)	\
17362de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_LTOFF_FPTR22,		0x52)	\
17372de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_LTOFF_FPTR64I,	0x53)	\
17382de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_LTOFF_FPTR32MSB,	0x54)	\
17392de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_LTOFF_FPTR32LSB,	0x55)	\
17402de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_LTOFF_FPTR64MSB,	0x56)	\
17412de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_LTOFF_FPTR64LSB,	0x57)	\
17422de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_SEGREL32MSB,		0x5c)	\
17432de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_SEGREL32LSB,		0x5d)	\
17442de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_SEGREL64MSB,		0x5e)	\
17452de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_SEGREL64LSB,		0x5f)	\
17462de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_SECREL32MSB,		0x64)	\
17472de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_SECREL32LSB,		0x65)	\
17482de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_SECREL64MSB,		0x66)	\
17492de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_SECREL64LSB,		0x67)	\
17502de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_REL32MSB,		0x6c)	\
17512de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_REL32LSB,		0x6d)	\
17522de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_REL64MSB,		0x6e)	\
17532de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_REL64LSB,		0x6f)	\
17542de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_LTV32MSB,		0x74)	\
17552de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_LTV32LSB,		0x75)	\
17562de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_LTV64MSB,		0x76)	\
17572de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_LTV64LSB,		0x77)	\
1758*839529caSEd Maste _ELF_DEFINE_RELOC(R_IA_64_PCREL21BI,		0x79)	\
17592de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_PCREL22,		0x7A)	\
17602de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_PCREL64I,		0x7B)	\
17612de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_IPLTMSB,		0x80)	\
17622de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_IPLTLSB,		0x81)	\
17632de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_SUB,			0x85)	\
17642de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_LTOFF22X,		0x86)	\
17652de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_LDXMOV,		0x87)	\
17662de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_TPREL14,		0x91)	\
17672de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_TPREL22,		0x92)	\
17682de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_TPREL64I,		0x93)	\
17692de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_TPREL64MSB,		0x96)	\
17702de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_TPREL64LSB,		0x97)	\
17712de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_LTOFF_TPREL22,	0x9A)	\
17722de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_DTPMOD64MSB,		0xA6)	\
17732de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_DTPMOD64LSB,		0xA7)	\
17742de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_LTOFF_DTPMOD22,	0xAA)	\
17752de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_DTPREL14,		0xB1)	\
17762de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_DTPREL22,		0xB2)	\
17772de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_DTPREL64I,		0xB3)	\
17782de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_DTPREL32MSB,		0xB4)	\
17792de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_DTPREL32LSB,		0xB5)	\
17802de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_DTPREL64MSB,		0xB6)	\
17812de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_DTPREL64LSB,		0xB7)	\
17822de3b87aSKai Wang _ELF_DEFINE_RELOC(R_IA_64_LTOFF_DTPREL22,	0xBA)
17832de3b87aSKai Wang 
17842de3b87aSKai Wang #define	_ELF_DEFINE_MIPS_RELOCATIONS()			\
17852de3b87aSKai Wang _ELF_DEFINE_RELOC(R_MIPS_NONE,			0)	\
17862de3b87aSKai Wang _ELF_DEFINE_RELOC(R_MIPS_16,			1)	\
17872de3b87aSKai Wang _ELF_DEFINE_RELOC(R_MIPS_32,			2)	\
17882de3b87aSKai Wang _ELF_DEFINE_RELOC(R_MIPS_REL32,			3)	\
17892de3b87aSKai Wang _ELF_DEFINE_RELOC(R_MIPS_26,			4)	\
17902de3b87aSKai Wang _ELF_DEFINE_RELOC(R_MIPS_HI16,			5)	\
17912de3b87aSKai Wang _ELF_DEFINE_RELOC(R_MIPS_LO16,			6)	\
17922de3b87aSKai Wang _ELF_DEFINE_RELOC(R_MIPS_GPREL16,		7)	\
17932de3b87aSKai Wang _ELF_DEFINE_RELOC(R_MIPS_LITERAL, 		8)	\
17942de3b87aSKai Wang _ELF_DEFINE_RELOC(R_MIPS_GOT16,			9)	\
17952de3b87aSKai Wang _ELF_DEFINE_RELOC(R_MIPS_PC16,			10)	\
17962de3b87aSKai Wang _ELF_DEFINE_RELOC(R_MIPS_CALL16,		11)	\
17972de3b87aSKai Wang _ELF_DEFINE_RELOC(R_MIPS_GPREL32,		12)	\
17982de3b87aSKai Wang _ELF_DEFINE_RELOC(R_MIPS_64,			18)	\
17992de3b87aSKai Wang _ELF_DEFINE_RELOC(R_MIPS_GOTHI16,		21)	\
18002de3b87aSKai Wang _ELF_DEFINE_RELOC(R_MIPS_GOTLO16,		22)	\
18012de3b87aSKai Wang _ELF_DEFINE_RELOC(R_MIPS_CALLHI16,		30)	\
1802da1cc412SAlexander Kabaev _ELF_DEFINE_RELOC(R_MIPS_CALLLO16,		31)	\
1803b54cfe0aSEd Maste _ELF_DEFINE_RELOC(R_MIPS_TLS_DTPMOD32,		38)	\
1804b54cfe0aSEd Maste _ELF_DEFINE_RELOC(R_MIPS_TLS_DTPREL32,		39)	\
1805b54cfe0aSEd Maste _ELF_DEFINE_RELOC(R_MIPS_TLS_DTPMOD64,		40)	\
1806b54cfe0aSEd Maste _ELF_DEFINE_RELOC(R_MIPS_TLS_DTPREL64,		41)	\
1807b54cfe0aSEd Maste _ELF_DEFINE_RELOC(R_MIPS_TLS_GD,		42)	\
1808b54cfe0aSEd Maste _ELF_DEFINE_RELOC(R_MIPS_TLS_LDM,		43)	\
1809b54cfe0aSEd Maste _ELF_DEFINE_RELOC(R_MIPS_TLS_DTPREL_HI16,	44)	\
1810b54cfe0aSEd Maste _ELF_DEFINE_RELOC(R_MIPS_TLS_DTPREL_LO16,	45)	\
1811b54cfe0aSEd Maste _ELF_DEFINE_RELOC(R_MIPS_TLS_GOTTPREL,		46)	\
1812b54cfe0aSEd Maste _ELF_DEFINE_RELOC(R_MIPS_TLS_TPREL32,		47)	\
1813b54cfe0aSEd Maste _ELF_DEFINE_RELOC(R_MIPS_TLS_TPREL64,		48)	\
1814b54cfe0aSEd Maste _ELF_DEFINE_RELOC(R_MIPS_TLS_TPREL_HI16,	49)	\
1815b54cfe0aSEd Maste _ELF_DEFINE_RELOC(R_MIPS_TLS_TPREL_LO16,	50)
18162de3b87aSKai Wang 
18172de3b87aSKai Wang #define	_ELF_DEFINE_PPC32_RELOCATIONS()		\
18182de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_NONE,		0)	\
18192de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_ADDR32,		1)	\
18202de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_ADDR24,		2)	\
18212de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_ADDR16,		3)	\
18222de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_ADDR16_LO,	4)	\
18232de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_ADDR16_HI,	5)	\
18242de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_ADDR16_HA,	6)	\
18252de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_ADDR14,		7)	\
18262de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_ADDR14_BRTAKEN,	8)	\
18272de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_ADDR14_BRNTAKEN, 9)	\
18282de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_REL24,		10)	\
18292de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_REL14,		11)	\
18302de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_REL14_BRTAKEN,	12)	\
18312de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_REL14_BRNTAKEN,	13)	\
18322de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT16,		14)	\
18332de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT16_LO,	15)	\
18342de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT16_HI,	16)	\
18352de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT16_HA,	17)	\
18362de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_PLTREL24,	18)	\
18372de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_COPY,		19)	\
18382de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GLOB_DAT,	20)	\
18392de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_JMP_SLOT,	21)	\
18402de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_RELATIVE,	22)	\
18412de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_LOCAL24PC,	23)	\
18422de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_UADDR32,	24)	\
18432de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_UADDR16,	25)	\
18442de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_REL32,		26)	\
18452de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_PLT32,		27)	\
18462de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_PLTREL32,	28)	\
18472de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_PLT16_LO,	29)	\
1848*839529caSEd Maste _ELF_DEFINE_RELOC(R_PPC_PLT16_HI,	30)	\
18492de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_PLT16_HA,	31)	\
18502de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_SDAREL16,	32)	\
18512de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_SECTOFF,	33)	\
18522de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_SECTOFF_LO,	34)	\
18532de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_SECTOFF_HI,	35)	\
18542de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_SECTOFF_HA,	36)	\
18552de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_ADDR30,		37)	\
18562de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_TLS,		67)	\
18572de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_DTPMOD32,	68)	\
18582de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_TPREL16,	69)	\
18592de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_TPREL16_LO,	70)	\
18602de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_TPREL16_HI,	71)	\
18612de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_TPREL16_HA,	72)	\
18622de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_TPREL32,	73)	\
18632de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_DTPREL16,	74)	\
18642de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_DTPREL16_LO,	75)	\
18652de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_DTPREL16_HI,	76)	\
18662de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_DTPREL16_HA,	77)	\
18672de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_DTPREL32,	78)	\
18682de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT_TLSGD16,	79)	\
18692de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT_TLSGD16_LO,	80)	\
18702de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT_TLSGD16_HI,	81)	\
18712de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT_TLSGD16_HA,	82)	\
18722de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT_TLSLD16,	83)	\
18732de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT_TLSLD16_LO,	84)	\
18742de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT_TLSLD16_HI,	85)	\
18752de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT_TLSLD16_HA,	86)	\
18762de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT_TPREL16,	87)	\
18772de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT_TPREL16_LO,	88)	\
18782de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT_TPREL16_HI,	89)	\
18792de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT_TPREL16_HA,	90)	\
18802de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT_DTPREL16,	91)	\
18812de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT_DTPREL16_LO, 92)	\
18822de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT_DTPREL16_HI, 93)	\
18832de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_GOT_DTPREL16_HA, 94)	\
18842de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_TLSGD,		95)	\
18852de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_TLSLD,		96)	\
18862de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_EMB_NADDR32,	101)	\
18872de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_EMB_NADDR16,	102)	\
18882de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_EMB_NADDR16_LO,	103)	\
18892de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_EMB_NADDR16_HI,	104)	\
18902de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_EMB_NADDR16_HA,	105)	\
18912de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_EMB_SDAI16,	106)	\
18922de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_EMB_SDA2I16,	107)	\
18932de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_EMB_SDA2REL,	108)	\
18942de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_EMB_SDA21,	109)	\
18952de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_EMB_MRKREF,	110)	\
18962de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_EMB_RELSEC16,	111)	\
18972de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_EMB_RELST_LO,	112)	\
18982de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_EMB_RELST_HI,	113)	\
18992de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_EMB_RELST_HA,	114)	\
19002de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_EMB_BIT_FLD,	115)	\
19012de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC_EMB_RELSDA,	116)	\
19022de3b87aSKai Wang 
19032de3b87aSKai Wang #define	_ELF_DEFINE_PPC64_RELOCATIONS()			\
19042de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_NONE,			0)	\
19052de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_ADDR32,		1)	\
19062de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_ADDR24,		2)	\
19072de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_ADDR16,		3)	\
19082de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_ADDR16_LO,		4)	\
19092de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_ADDR16_HI,		5)	\
19102de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_ADDR16_HA,		6)	\
19112de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_ADDR14,		7)	\
19122de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_ADDR14_BRTAKEN,	8)	\
19132de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_ADDR14_BRNTAKEN,	9)	\
19142de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_REL24,		10)	\
19152de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_REL14,		11)	\
19162de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_REL14_BRTAKEN,	12)	\
19172de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_REL14_BRNTAKEN,	13)	\
19182de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT16,		14)	\
19192de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT16_LO,		15)	\
19202de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT16_HI,		16)	\
19212de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT16_HA,		17)	\
19222de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_COPY,			19)	\
19232de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GLOB_DAT,		20)	\
19242de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_JMP_SLOT,		21)	\
19252de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_RELATIVE,		22)	\
19262de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_UADDR32,		24)	\
19272de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_UADDR16,		25)	\
19282de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_REL32,		26)	\
19292de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_PLT32,		27)	\
19302de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_PLTREL32,		28)	\
19312de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_PLT16_LO,		29)	\
19322de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_PLT16_HI,		30)	\
19332de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_PLT16_HA,		31)	\
19342de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_SECTOFF,		33)	\
19352de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_SECTOFF_LO,		34)	\
19362de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_SECTOFF_HI,		35)	\
19372de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_SECTOFF_HA,		36)	\
19382de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_ADDR30,		37)	\
19392de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_ADDR64,		38)	\
19402de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_ADDR16_HIGHER,	39)	\
19412de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_ADDR16_HIGHERA,	40)	\
19422de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_ADDR16_HIGHEST,	41)	\
19432de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_ADDR16_HIGHESTA,	42)	\
19442de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_UADDR64,		43)	\
19452de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_REL64,		44)	\
19462de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_PLT64,		45)	\
19472de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_PLTREL64,		46)	\
19482de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TOC16,		47)	\
19492de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TOC16_LO,		48)	\
19502de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TOC16_HI,		49)	\
19512de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TOC16_HA,		50)	\
19522de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TOC,			51)	\
19532de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_PLTGOT16,		52)	\
19542de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_PLTGOT16_LO,		53)	\
19552de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_PLTGOT16_HI,		54)	\
19562de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_PLTGOT16_HA,		55)	\
19572de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_ADDR16_DS,		56)	\
19582de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_ADDR16_LO_DS,		57)	\
19592de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT16_DS,		58)	\
19602de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT16_LO_DS,		59)	\
19612de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_PLT16_LO_DS,		60)	\
19622de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_SECTOFF_DS,		61)	\
19632de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_SECTOFF_LO_DS,	62)	\
19642de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TOC16_DS,		63)	\
19652de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TOC16_LO_DS,		64)	\
19662de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_PLTGOT16_DS,		65)	\
19672de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_PLTGOT16_LO_DS,	66)	\
19682de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TLS,			67)	\
19692de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_DTPMOD64,		68)	\
19702de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TPREL16,		69)	\
19712de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TPREL16_LO,		60)	\
19722de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TPREL16_HI,		71)	\
19732de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TPREL16_HA,		72)	\
19742de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TPREL64,		73)	\
19752de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_DTPREL16,		74)	\
19762de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_DTPREL16_LO,		75)	\
19772de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_DTPREL16_HI,		76)	\
19782de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_DTPREL16_HA,		77)	\
19792de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_DTPREL64,		78)	\
19802de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT_TLSGD16,		79)	\
19812de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT_TLSGD16_LO,	80)	\
19822de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT_TLSGD16_HI,	81)	\
19832de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT_TLSGD16_HA,	82)	\
19842de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT_TLSLD16,		83)	\
19852de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT_TLSLD16_LO,	84)	\
19862de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT_TLSLD16_HI,	85)	\
19872de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT_TLSLD16_HA,	86)	\
19882de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT_TPREL16_DS,	87)	\
19892de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT_TPREL16_LO_DS,	88)	\
19902de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT_TPREL16_HI,	89)	\
19912de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT_TPREL16_HA,	90)	\
19922de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT_DTPREL16_DS,	91)	\
19932de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT_DTPREL16_LO_DS,	92)	\
19942de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT_DTPREL16_HI,	93)	\
19952de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_GOT_DTPREL16_HA,	94)	\
19962de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TPREL16_DS,		95)	\
19972de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TPREL16_LO_DS,	96)	\
19982de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TPREL16_HIGHER,	97)	\
19992de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TPREL16_HIGHERA,	98)	\
20002de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TPREL16_HIGHEST,	99)	\
20012de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TPREL16_HIGHESTA,	100)	\
20022de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_DTPREL16_DS,		101)	\
20032de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_DTPREL16_LO_DS,	102)	\
20042de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_DTPREL16_HIGHER,	103)	\
20052de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_DTPREL16_HIGHERA,	104)	\
20062de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_DTPREL16_HIGHEST,	105)	\
20072de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_DTPREL16_HIGHESTA,	106)	\
20082de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TLSGD,		107)	\
20092de3b87aSKai Wang _ELF_DEFINE_RELOC(R_PPC64_TLSLD,		108)
20102de3b87aSKai Wang 
2011656f49f8SEd Maste #define	_ELF_DEFINE_RISCV_RELOCATIONS()			\
2012656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_NONE,			0)	\
2013656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_32,			1)	\
2014656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_64,			2)	\
2015656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_RELATIVE,		3)	\
2016656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_COPY,			4)	\
2017656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_JUMP_SLOT,		5)	\
2018656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_TLS_DTPMOD32,		6)	\
2019656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_TLS_DTPMOD64,		7)	\
2020656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_TLS_DTPREL32,		8)	\
2021656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_TLS_DTPREL64,		9)	\
2022656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_TLS_TPREL32,		10)	\
2023656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_TLS_TPREL64,		11)	\
2024656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_BRANCH,		16)	\
2025656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_JAL,			17)	\
2026656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_CALL,			18)	\
2027656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_CALL_PLT,		19)	\
2028656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_GOT_HI20,		20)	\
2029656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_TLS_GOT_HI20,		21)	\
2030656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_TLS_GD_HI20,		22)	\
2031656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_PCREL_HI20,		23)	\
2032656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_PCREL_LO12_I,		24)	\
2033656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_PCREL_LO12_S,		25)	\
2034656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_HI20,			26)	\
2035656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_LO12_I,		27)	\
2036656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_LO12_S,		28)	\
2037656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_TPREL_HI20,		29)	\
2038656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_TPREL_LO12_I,		30)	\
2039656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_TPREL_LO12_S,		31)	\
2040656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_TPREL_ADD,		32)	\
2041656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_ADD8,			33)	\
2042656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_ADD16,		34)	\
2043656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_ADD32,		35)	\
2044656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_ADD64,		36)	\
2045656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_SUB8,			37)	\
2046656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_SUB16,		38)	\
2047656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_SUB32,		39)	\
2048656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_SUB64,		40)	\
2049656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_GNU_VTINHERIT,	41)	\
2050656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_GNU_VTENTRY,		42)	\
2051*839529caSEd Maste _ELF_DEFINE_RELOC(R_RISCV_ALIGN,		43)	\
2052656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_RVC_BRANCH,		44)	\
2053656f49f8SEd Maste _ELF_DEFINE_RELOC(R_RISCV_RVC_JUMP,		45)
2054656f49f8SEd Maste 
20552de3b87aSKai Wang #define	_ELF_DEFINE_SPARC_RELOCATIONS()		\
20562de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_NONE,		0)	\
20572de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_8,		1)	\
20582de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_16,		2)	\
20592de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_32, 		3)	\
20602de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_DISP8,	4)	\
20612de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_DISP16,	5)	\
20622de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_DISP32,	6)	\
20632de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_WDISP30,	7)	\
20642de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_WDISP22,	8)	\
20652de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_HI22,		9)	\
20662de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_22,		10)	\
20672de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_13,		11)	\
20682de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_LO10,		12)	\
20692de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_GOT10,	13)	\
20702de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_GOT13,	14)	\
20712de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_GOT22,	15)	\
20722de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_PC10,		16)	\
20732de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_PC22,		17)	\
20742de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_WPLT30,	18)	\
20752de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_COPY,		19)	\
20762de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_GLOB_DAT,	20)	\
20772de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_JMP_SLOT,	21)	\
20782de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_RELATIVE,	22)	\
20792de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_UA32,		23)	\
20802de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_PLT32,	24)	\
20812de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_HIPLT22,	25)	\
20822de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_LOPLT10,	26)	\
20832de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_PCPLT32,	27)	\
20842de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_PCPLT22,	28)	\
20852de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_PCPLT10,	29)	\
20862de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_10,		30)	\
20872de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_11,		31)	\
20882de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_64,		32)	\
20892de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_OLO10,	33)	\
20902de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_HH22,		34)	\
20912de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_HM10,		35)	\
20922de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_LM22,		36)	\
20932de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_PC_HH22,	37)	\
20942de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_PC_HM10,	38)	\
20952de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_PC_LM22,	39)	\
20962de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_WDISP16,	40)	\
20972de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_WDISP19,	41)	\
20982de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_7,		43)	\
20992de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_5,		44)	\
21002de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_6,		45)	\
21012de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_DISP64,	46)	\
21022de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_PLT64,	47)	\
21032de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_HIX22,	48)	\
21042de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_LOX10,	49)	\
21052de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_H44,		50)	\
21062de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_M44,		51)	\
21072de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_L44,		52)	\
21082de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_REGISTER,	53)	\
21092de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_UA64,		54)	\
21102de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_UA16,		55)	\
21112de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_GOTDATA_HIX22, 80)	\
21122de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_GOTDATA_LOX10, 81)	\
21132de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_GOTDATA_OP_HIX22, 82)	\
21142de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_GOTDATA_OP_LOX10, 83)	\
21152de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_GOTDATA_OP,	84)	\
21162de3b87aSKai Wang _ELF_DEFINE_RELOC(R_SPARC_H34,		85)
21172de3b87aSKai Wang 
21182de3b87aSKai Wang #define	_ELF_DEFINE_X86_64_RELOCATIONS()	\
21192de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_NONE,	0)	\
21202de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_64,		1)	\
21212de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_PC32,	2)	\
21222de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_GOT32,	3)	\
21232de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_PLT32,	4)	\
21242de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_COPY,	5)	\
21252de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_GLOB_DAT,	6)	\
21262de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_JUMP_SLOT,	7)	\
21272de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_RELATIVE,	8)	\
21282de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_GOTPCREL,	9)	\
21292de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_32,		10)	\
21302de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_32S,		11)	\
21312de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_16,		12)	\
21322de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_PC16,	13)	\
21332de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_8,		14)	\
21342de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_PC8,		15)	\
21352de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_DTPMOD64,	16)	\
21362de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_DTPOFF64,	17)	\
21372de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_TPOFF64,	18)	\
21382de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_TLSGD,	19)	\
21392de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_TLSLD,	20)	\
21402de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_DTPOFF32,	21)	\
21412de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_GOTTPOFF,	22)	\
21422de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_TPOFF32,	23)	\
21432de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_PC64,	24)	\
21442de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_GOTOFF64,	25)	\
21452de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_GOTPC32,	26)	\
214657736250SEd Maste _ELF_DEFINE_RELOC(R_X86_64_GOT64,	27)	\
214757736250SEd Maste _ELF_DEFINE_RELOC(R_X86_64_GOTPCREL64,	28)	\
214857736250SEd Maste _ELF_DEFINE_RELOC(R_X86_64_GOTPC64,	29)	\
214957736250SEd Maste _ELF_DEFINE_RELOC(R_X86_64_GOTPLT64,	30)	\
215057736250SEd Maste _ELF_DEFINE_RELOC(R_X86_64_PLTOFF64,	31)	\
21512de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_SIZE32,	32)	\
21522de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_SIZE64,	33)	\
21532de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_GOTPC32_TLSDESC, 34)	\
21542de3b87aSKai Wang _ELF_DEFINE_RELOC(R_X86_64_TLSDESC_CALL, 35)	\
215557736250SEd Maste _ELF_DEFINE_RELOC(R_X86_64_TLSDESC,	36)	\
215657736250SEd Maste _ELF_DEFINE_RELOC(R_X86_64_IRELATIVE,	37)
21572de3b87aSKai Wang 
21582de3b87aSKai Wang #define	_ELF_DEFINE_RELOCATIONS()		\
21592de3b87aSKai Wang _ELF_DEFINE_386_RELOCATIONS()			\
216071a0c925SEd Maste _ELF_DEFINE_AARCH64_RELOCATIONS()		\
21612de3b87aSKai Wang _ELF_DEFINE_AMD64_RELOCATIONS()			\
21622de3b87aSKai Wang _ELF_DEFINE_ARM_RELOCATIONS()			\
21632de3b87aSKai Wang _ELF_DEFINE_IA64_RELOCATIONS()			\
21642de3b87aSKai Wang _ELF_DEFINE_MIPS_RELOCATIONS()			\
21652de3b87aSKai Wang _ELF_DEFINE_PPC32_RELOCATIONS()			\
21662de3b87aSKai Wang _ELF_DEFINE_PPC64_RELOCATIONS()			\
2167*839529caSEd Maste _ELF_DEFINE_RISCV_RELOCATIONS()			\
21682de3b87aSKai Wang _ELF_DEFINE_SPARC_RELOCATIONS()			\
21692de3b87aSKai Wang _ELF_DEFINE_X86_64_RELOCATIONS()
21702de3b87aSKai Wang 
21712de3b87aSKai Wang #undef	_ELF_DEFINE_RELOC
21722de3b87aSKai Wang #define	_ELF_DEFINE_RELOC(N, V)		N = V ,
21732de3b87aSKai Wang enum {
21742de3b87aSKai Wang 	_ELF_DEFINE_RELOCATIONS()
21752de3b87aSKai Wang 	R__LAST__
21762de3b87aSKai Wang };
21772de3b87aSKai Wang 
21782de3b87aSKai Wang #define	PN_XNUM			0xFFFFU /* Use extended section numbering. */
21792de3b87aSKai Wang 
21802de3b87aSKai Wang /**
21812de3b87aSKai Wang  ** ELF Types.
21822de3b87aSKai Wang  **/
21832de3b87aSKai Wang 
21842de3b87aSKai Wang typedef uint32_t	Elf32_Addr;	/* Program address. */
21852de3b87aSKai Wang typedef uint8_t		Elf32_Byte;	/* Unsigned tiny integer. */
21862de3b87aSKai Wang typedef uint16_t	Elf32_Half;	/* Unsigned medium integer. */
21872de3b87aSKai Wang typedef uint32_t	Elf32_Off;	/* File offset. */
21882de3b87aSKai Wang typedef uint16_t	Elf32_Section;	/* Section index. */
21892de3b87aSKai Wang typedef int32_t		Elf32_Sword;	/* Signed integer. */
21902de3b87aSKai Wang typedef uint32_t	Elf32_Word;	/* Unsigned integer. */
21912de3b87aSKai Wang typedef uint64_t	Elf32_Lword;	/* Unsigned long integer. */
21922de3b87aSKai Wang 
21932de3b87aSKai Wang typedef uint64_t	Elf64_Addr;	/* Program address. */
21942de3b87aSKai Wang typedef uint8_t		Elf64_Byte;	/* Unsigned tiny integer. */
21952de3b87aSKai Wang typedef uint16_t	Elf64_Half;	/* Unsigned medium integer. */
21962de3b87aSKai Wang typedef uint64_t	Elf64_Off;	/* File offset. */
21972de3b87aSKai Wang typedef uint16_t	Elf64_Section;	/* Section index. */
21982de3b87aSKai Wang typedef int32_t		Elf64_Sword;	/* Signed integer. */
21992de3b87aSKai Wang typedef uint32_t	Elf64_Word;	/* Unsigned integer. */
22002de3b87aSKai Wang typedef uint64_t	Elf64_Lword;	/* Unsigned long integer. */
22012de3b87aSKai Wang typedef uint64_t	Elf64_Xword;	/* Unsigned long integer. */
22022de3b87aSKai Wang typedef int64_t		Elf64_Sxword;	/* Signed long integer. */
22032de3b87aSKai Wang 
22042de3b87aSKai Wang 
22052de3b87aSKai Wang /*
22062de3b87aSKai Wang  * Capability descriptors.
22072de3b87aSKai Wang  */
22082de3b87aSKai Wang 
22092de3b87aSKai Wang /* 32-bit capability descriptor. */
22102de3b87aSKai Wang typedef struct {
22112de3b87aSKai Wang 	Elf32_Word	c_tag;	     /* Type of entry. */
22122de3b87aSKai Wang 	union {
22132de3b87aSKai Wang 		Elf32_Word	c_val; /* Integer value. */
22142de3b87aSKai Wang 		Elf32_Addr	c_ptr; /* Pointer value. */
22152de3b87aSKai Wang 	} c_un;
22162de3b87aSKai Wang } Elf32_Cap;
22172de3b87aSKai Wang 
22182de3b87aSKai Wang /* 64-bit capability descriptor. */
22192de3b87aSKai Wang typedef struct {
22202de3b87aSKai Wang 	Elf64_Xword	c_tag;	     /* Type of entry. */
22212de3b87aSKai Wang 	union {
22222de3b87aSKai Wang 		Elf64_Xword	c_val; /* Integer value. */
22232de3b87aSKai Wang 		Elf64_Addr	c_ptr; /* Pointer value. */
22242de3b87aSKai Wang 	} c_un;
22252de3b87aSKai Wang } Elf64_Cap;
22262de3b87aSKai Wang 
22272de3b87aSKai Wang /*
22282de3b87aSKai Wang  * MIPS .conflict section entries.
22292de3b87aSKai Wang  */
22302de3b87aSKai Wang 
22312de3b87aSKai Wang /* 32-bit entry. */
22322de3b87aSKai Wang typedef struct {
22332de3b87aSKai Wang 	Elf32_Addr	c_index;
22342de3b87aSKai Wang } Elf32_Conflict;
22352de3b87aSKai Wang 
22362de3b87aSKai Wang /* 64-bit entry. */
22372de3b87aSKai Wang typedef struct {
22382de3b87aSKai Wang 	Elf64_Addr	c_index;
22392de3b87aSKai Wang } Elf64_Conflict;
22402de3b87aSKai Wang 
22412de3b87aSKai Wang /*
22422de3b87aSKai Wang  * Dynamic section entries.
22432de3b87aSKai Wang  */
22442de3b87aSKai Wang 
22452de3b87aSKai Wang /* 32-bit entry. */
22462de3b87aSKai Wang typedef struct {
22472de3b87aSKai Wang 	Elf32_Sword	d_tag;	     /* Type of entry. */
22482de3b87aSKai Wang 	union {
22492de3b87aSKai Wang 		Elf32_Word	d_val; /* Integer value. */
22502de3b87aSKai Wang 		Elf32_Addr	d_ptr; /* Pointer value. */
22512de3b87aSKai Wang 	} d_un;
22522de3b87aSKai Wang } Elf32_Dyn;
22532de3b87aSKai Wang 
22542de3b87aSKai Wang /* 64-bit entry. */
22552de3b87aSKai Wang typedef struct {
22562de3b87aSKai Wang 	Elf64_Sxword	d_tag;	     /* Type of entry. */
22572de3b87aSKai Wang 	union {
22582de3b87aSKai Wang 		Elf64_Xword	d_val; /* Integer value. */
22592de3b87aSKai Wang 		Elf64_Addr	d_ptr; /* Pointer value; */
22602de3b87aSKai Wang 	} d_un;
22612de3b87aSKai Wang } Elf64_Dyn;
22622de3b87aSKai Wang 
22632de3b87aSKai Wang 
22642de3b87aSKai Wang /*
22652de3b87aSKai Wang  * The executable header (EHDR).
22662de3b87aSKai Wang  */
22672de3b87aSKai Wang 
22682de3b87aSKai Wang /* 32 bit EHDR. */
22692de3b87aSKai Wang typedef struct {
22702de3b87aSKai Wang 	unsigned char   e_ident[EI_NIDENT]; /* ELF identification. */
22712de3b87aSKai Wang 	Elf32_Half      e_type;	     /* Object file type (ET_*). */
22722de3b87aSKai Wang 	Elf32_Half      e_machine;   /* Machine type (EM_*). */
22732de3b87aSKai Wang 	Elf32_Word      e_version;   /* File format version (EV_*). */
22742de3b87aSKai Wang 	Elf32_Addr      e_entry;     /* Start address. */
22752de3b87aSKai Wang 	Elf32_Off       e_phoff;     /* File offset to the PHDR table. */
22762de3b87aSKai Wang 	Elf32_Off       e_shoff;     /* File offset to the SHDRheader. */
22772de3b87aSKai Wang 	Elf32_Word      e_flags;     /* Flags (EF_*). */
22782de3b87aSKai Wang 	Elf32_Half      e_ehsize;    /* Elf header size in bytes. */
22792de3b87aSKai Wang 	Elf32_Half      e_phentsize; /* PHDR table entry size in bytes. */
22802de3b87aSKai Wang 	Elf32_Half      e_phnum;     /* Number of PHDR entries. */
22812de3b87aSKai Wang 	Elf32_Half      e_shentsize; /* SHDR table entry size in bytes. */
22822de3b87aSKai Wang 	Elf32_Half      e_shnum;     /* Number of SHDR entries. */
22832de3b87aSKai Wang 	Elf32_Half      e_shstrndx;  /* Index of section name string table. */
22842de3b87aSKai Wang } Elf32_Ehdr;
22852de3b87aSKai Wang 
22862de3b87aSKai Wang 
22872de3b87aSKai Wang /* 64 bit EHDR. */
22882de3b87aSKai Wang typedef struct {
22892de3b87aSKai Wang 	unsigned char   e_ident[EI_NIDENT]; /* ELF identification. */
22902de3b87aSKai Wang 	Elf64_Half      e_type;	     /* Object file type (ET_*). */
22912de3b87aSKai Wang 	Elf64_Half      e_machine;   /* Machine type (EM_*). */
22922de3b87aSKai Wang 	Elf64_Word      e_version;   /* File format version (EV_*). */
22932de3b87aSKai Wang 	Elf64_Addr      e_entry;     /* Start address. */
22942de3b87aSKai Wang 	Elf64_Off       e_phoff;     /* File offset to the PHDR table. */
22952de3b87aSKai Wang 	Elf64_Off       e_shoff;     /* File offset to the SHDRheader. */
22962de3b87aSKai Wang 	Elf64_Word      e_flags;     /* Flags (EF_*). */
22972de3b87aSKai Wang 	Elf64_Half      e_ehsize;    /* Elf header size in bytes. */
22982de3b87aSKai Wang 	Elf64_Half      e_phentsize; /* PHDR table entry size in bytes. */
22992de3b87aSKai Wang 	Elf64_Half      e_phnum;     /* Number of PHDR entries. */
23002de3b87aSKai Wang 	Elf64_Half      e_shentsize; /* SHDR table entry size in bytes. */
23012de3b87aSKai Wang 	Elf64_Half      e_shnum;     /* Number of SHDR entries. */
23022de3b87aSKai Wang 	Elf64_Half      e_shstrndx;  /* Index of section name string table. */
23032de3b87aSKai Wang } Elf64_Ehdr;
23042de3b87aSKai Wang 
23052de3b87aSKai Wang 
23062de3b87aSKai Wang /*
23072de3b87aSKai Wang  * Shared object information.
23082de3b87aSKai Wang  */
23092de3b87aSKai Wang 
23102de3b87aSKai Wang /* 32-bit entry. */
23112de3b87aSKai Wang typedef struct {
23122de3b87aSKai Wang 	Elf32_Word l_name;	     /* The name of a shared object. */
23132de3b87aSKai Wang 	Elf32_Word l_time_stamp;     /* 32-bit timestamp. */
23142de3b87aSKai Wang 	Elf32_Word l_checksum;	     /* Checksum of visible symbols, sizes. */
23152de3b87aSKai Wang 	Elf32_Word l_version;	     /* Interface version string index. */
23162de3b87aSKai Wang 	Elf32_Word l_flags;	     /* Flags (LL_*). */
23172de3b87aSKai Wang } Elf32_Lib;
23182de3b87aSKai Wang 
23192de3b87aSKai Wang /* 64-bit entry. */
23202de3b87aSKai Wang typedef struct {
2321cf781b2eSEd Maste 	Elf64_Word l_name;	     /* The name of a shared object. */
2322cf781b2eSEd Maste 	Elf64_Word l_time_stamp;     /* 32-bit timestamp. */
2323cf781b2eSEd Maste 	Elf64_Word l_checksum;	     /* Checksum of visible symbols, sizes. */
2324cf781b2eSEd Maste 	Elf64_Word l_version;	     /* Interface version string index. */
2325cf781b2eSEd Maste 	Elf64_Word l_flags;	     /* Flags (LL_*). */
23262de3b87aSKai Wang } Elf64_Lib;
23272de3b87aSKai Wang 
23282de3b87aSKai Wang #define	_ELF_DEFINE_LL_FLAGS()			\
23292de3b87aSKai Wang _ELF_DEFINE_LL(LL_NONE,			0,	\
23302de3b87aSKai Wang 	"no flags")				\
23312de3b87aSKai Wang _ELF_DEFINE_LL(LL_EXACT_MATCH,		0x1,	\
23322de3b87aSKai Wang 	"require an exact match")		\
23332de3b87aSKai Wang _ELF_DEFINE_LL(LL_IGNORE_INT_VER,	0x2,	\
23342de3b87aSKai Wang 	"ignore version incompatibilities")	\
23352de3b87aSKai Wang _ELF_DEFINE_LL(LL_REQUIRE_MINOR,	0x4,	\
23362de3b87aSKai Wang 	"")					\
23372de3b87aSKai Wang _ELF_DEFINE_LL(LL_EXPORTS,		0x8,	\
23382de3b87aSKai Wang 	"")					\
23392de3b87aSKai Wang _ELF_DEFINE_LL(LL_DELAY_LOAD,		0x10,	\
23402de3b87aSKai Wang 	"")					\
23412de3b87aSKai Wang _ELF_DEFINE_LL(LL_DELTA,		0x20,	\
23422de3b87aSKai Wang 	"")
23432de3b87aSKai Wang 
23442de3b87aSKai Wang #undef	_ELF_DEFINE_LL
23452de3b87aSKai Wang #define	_ELF_DEFINE_LL(N, V, DESCR)	N = V ,
23462de3b87aSKai Wang enum {
23472de3b87aSKai Wang 	_ELF_DEFINE_LL_FLAGS()
23482de3b87aSKai Wang 	LL__LAST__
23492de3b87aSKai Wang };
23502de3b87aSKai Wang 
23512de3b87aSKai Wang /*
23522de3b87aSKai Wang  * Note tags
23532de3b87aSKai Wang  */
23542de3b87aSKai Wang 
23552de3b87aSKai Wang #define	_ELF_DEFINE_NOTE_ENTRY_TYPES()					\
23562de3b87aSKai Wang _ELF_DEFINE_NT(NT_ABI_TAG,	1,	"Tag indicating the ABI")	\
23572de3b87aSKai Wang _ELF_DEFINE_NT(NT_GNU_HWCAP,	2,	"Hardware capabilities")	\
23582de3b87aSKai Wang _ELF_DEFINE_NT(NT_GNU_BUILD_ID,	3,	"Build id, set by ld(1)")	\
23592de3b87aSKai Wang _ELF_DEFINE_NT(NT_GNU_GOLD_VERSION, 4,					\
23602de3b87aSKai Wang 	"Version number of the GNU gold linker")			\
23612de3b87aSKai Wang _ELF_DEFINE_NT(NT_PRSTATUS,	1,	"Process status")		\
23622de3b87aSKai Wang _ELF_DEFINE_NT(NT_FPREGSET,	2,	"Floating point information")	\
23632de3b87aSKai Wang _ELF_DEFINE_NT(NT_PRPSINFO,	3,	"Process information")		\
23642de3b87aSKai Wang _ELF_DEFINE_NT(NT_AUXV,		6,	"Auxiliary vector")		\
23652de3b87aSKai Wang _ELF_DEFINE_NT(NT_PRXFPREG,	0x46E62B7FUL,				\
23662de3b87aSKai Wang 	"Linux user_xfpregs structure")					\
23672de3b87aSKai Wang _ELF_DEFINE_NT(NT_PSTATUS,	10,	"Linux process status")		\
23682de3b87aSKai Wang _ELF_DEFINE_NT(NT_FPREGS,	12,	"Linux floating point regset")	\
23692de3b87aSKai Wang _ELF_DEFINE_NT(NT_PSINFO,	13,	"Linux process information")	\
23702de3b87aSKai Wang _ELF_DEFINE_NT(NT_LWPSTATUS,	16,	"Linux lwpstatus_t type")	\
23712de3b87aSKai Wang _ELF_DEFINE_NT(NT_LWPSINFO,	17,	"Linux lwpinfo_t type")
23722de3b87aSKai Wang 
23732de3b87aSKai Wang #undef	_ELF_DEFINE_NT
23742de3b87aSKai Wang #define	_ELF_DEFINE_NT(N, V, DESCR)	N = V ,
23752de3b87aSKai Wang enum {
23762de3b87aSKai Wang 	_ELF_DEFINE_NOTE_ENTRY_TYPES()
23772de3b87aSKai Wang 	NT__LAST__
23782de3b87aSKai Wang };
23792de3b87aSKai Wang 
23802de3b87aSKai Wang /* Aliases for the ABI tag. */
23812de3b87aSKai Wang #define	NT_FREEBSD_ABI_TAG	NT_ABI_TAG
23822de3b87aSKai Wang #define	NT_GNU_ABI_TAG		NT_ABI_TAG
23832de3b87aSKai Wang #define	NT_NETBSD_IDENT		NT_ABI_TAG
23842de3b87aSKai Wang #define	NT_OPENBSD_IDENT	NT_ABI_TAG
23852de3b87aSKai Wang 
23862de3b87aSKai Wang /*
23872de3b87aSKai Wang  * Note descriptors.
23882de3b87aSKai Wang  */
23892de3b87aSKai Wang 
23902de3b87aSKai Wang typedef	struct {
23912de3b87aSKai Wang 	uint32_t	n_namesz;    /* Length of note's name. */
23922de3b87aSKai Wang 	uint32_t	n_descsz;    /* Length of note's value. */
23932de3b87aSKai Wang 	uint32_t	n_type;	     /* Type of note. */
23942de3b87aSKai Wang } Elf_Note;
23952de3b87aSKai Wang 
23962de3b87aSKai Wang typedef Elf_Note Elf32_Nhdr;	     /* 32-bit note header. */
23972de3b87aSKai Wang typedef Elf_Note Elf64_Nhdr;	     /* 64-bit note header. */
23982de3b87aSKai Wang 
23992de3b87aSKai Wang /*
24002de3b87aSKai Wang  * MIPS ELF options descriptor header.
24012de3b87aSKai Wang  */
24022de3b87aSKai Wang 
24032de3b87aSKai Wang typedef struct {
24042de3b87aSKai Wang 	Elf64_Byte	kind;        /* Type of options. */
24052de3b87aSKai Wang 	Elf64_Byte     	size;	     /* Size of option descriptor. */
24062de3b87aSKai Wang 	Elf64_Half	section;     /* Index of section affected. */
24072de3b87aSKai Wang 	Elf64_Word	info;        /* Kind-specific information. */
24082de3b87aSKai Wang } Elf_Options;
24092de3b87aSKai Wang 
24102de3b87aSKai Wang /*
24112de3b87aSKai Wang  * Option kinds.
24122de3b87aSKai Wang  */
24132de3b87aSKai Wang 
24142de3b87aSKai Wang #define	_ELF_DEFINE_OPTION_KINDS()					\
24152de3b87aSKai Wang _ELF_DEFINE_ODK(ODK_NULL,       0,      "undefined")			\
24162de3b87aSKai Wang _ELF_DEFINE_ODK(ODK_REGINFO,    1,      "register usage info")		\
24172de3b87aSKai Wang _ELF_DEFINE_ODK(ODK_EXCEPTIONS, 2,      "exception processing info")	\
24182de3b87aSKai Wang _ELF_DEFINE_ODK(ODK_PAD,        3,      "section padding")		\
24192de3b87aSKai Wang _ELF_DEFINE_ODK(ODK_HWPATCH,    4,      "hardware patch applied")	\
24202de3b87aSKai Wang _ELF_DEFINE_ODK(ODK_FILL,       5,      "fill value used by linker")	\
24212de3b87aSKai Wang _ELF_DEFINE_ODK(ODK_TAGS,       6,      "reserved space for tools")	\
24222de3b87aSKai Wang _ELF_DEFINE_ODK(ODK_HWAND,      7,      "hardware AND patch applied")	\
24232de3b87aSKai Wang _ELF_DEFINE_ODK(ODK_HWOR,       8,      "hardware OR patch applied")	\
24242de3b87aSKai Wang _ELF_DEFINE_ODK(ODK_GP_GROUP,   9,					\
24252de3b87aSKai Wang 	"GP group to use for text/data sections")			\
24262de3b87aSKai Wang _ELF_DEFINE_ODK(ODK_IDENT,      10,     "ID information")		\
24272de3b87aSKai Wang _ELF_DEFINE_ODK(ODK_PAGESIZE,   11,     "page size infomation")
24282de3b87aSKai Wang 
24292de3b87aSKai Wang #undef	_ELF_DEFINE_ODK
24302de3b87aSKai Wang #define	_ELF_DEFINE_ODK(N, V, DESCR)	N = V ,
24312de3b87aSKai Wang enum {
24322de3b87aSKai Wang 	_ELF_DEFINE_OPTION_KINDS()
24332de3b87aSKai Wang 	ODK__LAST__
24342de3b87aSKai Wang };
24352de3b87aSKai Wang 
24362de3b87aSKai Wang /*
24372de3b87aSKai Wang  * ODK_EXCEPTIONS info field masks.
24382de3b87aSKai Wang  */
24392de3b87aSKai Wang 
24402de3b87aSKai Wang #define	_ELF_DEFINE_ODK_EXCEPTIONS_MASK()				\
24412de3b87aSKai Wang _ELF_DEFINE_OEX(OEX_FPU_MIN,    0x0000001FUL,				\
24422de3b87aSKai Wang 	"minimum FPU exception which must be enabled")			\
24432de3b87aSKai Wang _ELF_DEFINE_OEX(OEX_FPU_MAX,    0x00001F00UL,				\
24442de3b87aSKai Wang 	"maximum FPU exception which can be enabled")			\
24452de3b87aSKai Wang _ELF_DEFINE_OEX(OEX_PAGE0,      0x00010000UL,				\
24462de3b87aSKai Wang 	"page zero must be mapped")					\
24472de3b87aSKai Wang _ELF_DEFINE_OEX(OEX_SMM,        0x00020000UL,				\
24482de3b87aSKai Wang 	"run in sequential memory mode")				\
24492de3b87aSKai Wang _ELF_DEFINE_OEX(OEX_PRECISEFP,  0x00040000UL,				\
24502de3b87aSKai Wang 	"run in precise FP exception mode")				\
24512de3b87aSKai Wang _ELF_DEFINE_OEX(OEX_DISMISS,    0x00080000UL,				\
24522de3b87aSKai Wang 	"dismiss invalid address traps")
24532de3b87aSKai Wang 
24542de3b87aSKai Wang #undef	_ELF_DEFINE_OEX
24552de3b87aSKai Wang #define	_ELF_DEFINE_OEX(N, V, DESCR)	N = V ,
24562de3b87aSKai Wang enum {
24572de3b87aSKai Wang 	_ELF_DEFINE_ODK_EXCEPTIONS_MASK()
24582de3b87aSKai Wang 	OEX__LAST__
24592de3b87aSKai Wang };
24602de3b87aSKai Wang 
24612de3b87aSKai Wang /*
24622de3b87aSKai Wang  * ODK_PAD info field masks.
24632de3b87aSKai Wang  */
24642de3b87aSKai Wang 
24652de3b87aSKai Wang #define	_ELF_DEFINE_ODK_PAD_MASK()					\
24662de3b87aSKai Wang _ELF_DEFINE_OPAD(OPAD_PREFIX,   0x0001)					\
24672de3b87aSKai Wang _ELF_DEFINE_OPAD(OPAD_POSTFIX,  0x0002)					\
24682de3b87aSKai Wang _ELF_DEFINE_OPAD(OPAD_SYMBOL,   0x0004)
24692de3b87aSKai Wang 
24702de3b87aSKai Wang #undef	_ELF_DEFINE_OPAD
24712de3b87aSKai Wang #define	_ELF_DEFINE_OPAD(N, V)		N = V ,
24722de3b87aSKai Wang enum {
24732de3b87aSKai Wang 	_ELF_DEFINE_ODK_PAD_MASK()
24742de3b87aSKai Wang 	OPAD__LAST__
24752de3b87aSKai Wang };
24762de3b87aSKai Wang 
24772de3b87aSKai Wang /*
24782de3b87aSKai Wang  * ODK_HWPATCH info field masks.
24792de3b87aSKai Wang  */
24802de3b87aSKai Wang 
24812de3b87aSKai Wang #define	_ELF_DEFINE_ODK_HWPATCH_MASK()					\
24822de3b87aSKai Wang _ELF_DEFINE_OHW(OHW_R4KEOP,     0x00000001UL,				\
24832de3b87aSKai Wang 	"patch for R4000 branch at end-of-page bug")			\
24842de3b87aSKai Wang _ELF_DEFINE_OHW(OHW_R8KPFETCH,  0x00000002UL,				\
24852de3b87aSKai Wang 	"R8000 prefetch bug may occur")					\
24862de3b87aSKai Wang _ELF_DEFINE_OHW(OHW_R5KEOP,     0x00000004UL,				\
24872de3b87aSKai Wang 	"patch for R5000 branch at end-of-page bug")			\
24882de3b87aSKai Wang _ELF_DEFINE_OHW(OHW_R5KCVTL,    0x00000008UL,				\
24892de3b87aSKai Wang 	"R5000 cvt.[ds].l bug: clean == 1")				\
24902de3b87aSKai Wang _ELF_DEFINE_OHW(OHW_R10KLDL,    0x00000010UL,				\
24912de3b87aSKai Wang 	"needd patch for R10000 misaligned load")
24922de3b87aSKai Wang 
24932de3b87aSKai Wang #undef	_ELF_DEFINE_OHW
24942de3b87aSKai Wang #define	_ELF_DEFINE_OHW(N, V, DESCR)	N = V ,
24952de3b87aSKai Wang enum {
24962de3b87aSKai Wang 	_ELF_DEFINE_ODK_HWPATCH_MASK()
24972de3b87aSKai Wang 	OHW__LAST__
24982de3b87aSKai Wang };
24992de3b87aSKai Wang 
25002de3b87aSKai Wang /*
25012de3b87aSKai Wang  * ODK_HWAND/ODK_HWOR info field and hwp_flags[12] masks.
25022de3b87aSKai Wang  */
25032de3b87aSKai Wang 
25042de3b87aSKai Wang #define	_ELF_DEFINE_ODK_HWP_MASK()					\
25052de3b87aSKai Wang _ELF_DEFINE_HWP(OHWA0_R4KEOP_CHECKED, 0x00000001UL,			\
25062de3b87aSKai Wang 	"object checked for R4000 end-of-page bug")			\
25072de3b87aSKai Wang _ELF_DEFINE_HWP(OHWA0_R4KEOP_CLEAN, 0x00000002UL,			\
25082de3b87aSKai Wang 	"object verified clean for R4000 end-of-page bug")		\
25092de3b87aSKai Wang _ELF_DEFINE_HWP(OHWO0_FIXADE,   0x00000001UL,				\
25102de3b87aSKai Wang 	"object requires call to fixade")
25112de3b87aSKai Wang 
25122de3b87aSKai Wang #undef	_ELF_DEFINE_HWP
25132de3b87aSKai Wang #define	_ELF_DEFINE_HWP(N, V, DESCR)	N = V ,
25142de3b87aSKai Wang enum {
25152de3b87aSKai Wang 	_ELF_DEFINE_ODK_HWP_MASK()
25162de3b87aSKai Wang 	OHWX0__LAST__
25172de3b87aSKai Wang };
25182de3b87aSKai Wang 
25192de3b87aSKai Wang /*
25202de3b87aSKai Wang  * ODK_IDENT/ODK_GP_GROUP info field masks.
25212de3b87aSKai Wang  */
25222de3b87aSKai Wang 
25232de3b87aSKai Wang #define	_ELF_DEFINE_ODK_GP_MASK()					\
25242de3b87aSKai Wang _ELF_DEFINE_OGP(OGP_GROUP,      0x0000FFFFUL, "GP group number")	\
25252de3b87aSKai Wang _ELF_DEFINE_OGP(OGP_SELF,       0x00010000UL,				\
25262de3b87aSKai Wang 	"GP group is self-contained")
25272de3b87aSKai Wang 
25282de3b87aSKai Wang #undef	_ELF_DEFINE_OGP
25292de3b87aSKai Wang #define	_ELF_DEFINE_OGP(N, V, DESCR)	N = V ,
25302de3b87aSKai Wang enum {
25312de3b87aSKai Wang 	_ELF_DEFINE_ODK_GP_MASK()
25322de3b87aSKai Wang 	OGP__LAST__
25332de3b87aSKai Wang };
25342de3b87aSKai Wang 
25352de3b87aSKai Wang /*
25362de3b87aSKai Wang  * MIPS ELF register info descriptor.
25372de3b87aSKai Wang  */
25382de3b87aSKai Wang 
25392de3b87aSKai Wang /* 32 bit RegInfo entry. */
25402de3b87aSKai Wang typedef struct {
25412de3b87aSKai Wang 	Elf32_Word	ri_gprmask;  /* Mask of general register used. */
25422de3b87aSKai Wang 	Elf32_Word	ri_cprmask[4]; /* Mask of coprocessor register used. */
25432de3b87aSKai Wang 	Elf32_Addr	ri_gp_value; /* GP register value. */
25442de3b87aSKai Wang } Elf32_RegInfo;
25452de3b87aSKai Wang 
25462de3b87aSKai Wang /* 64 bit RegInfo entry. */
25472de3b87aSKai Wang typedef struct {
25482de3b87aSKai Wang 	Elf64_Word	ri_gprmask;  /* Mask of general register used. */
25492de3b87aSKai Wang 	Elf64_Word	ri_pad;	     /* Padding. */
25502de3b87aSKai Wang 	Elf64_Word	ri_cprmask[4]; /* Mask of coprocessor register used. */
25512de3b87aSKai Wang 	Elf64_Addr	ri_gp_value; /* GP register value. */
25522de3b87aSKai Wang } Elf64_RegInfo;
25532de3b87aSKai Wang 
25542de3b87aSKai Wang /*
25552de3b87aSKai Wang  * Program Header Table (PHDR) entries.
25562de3b87aSKai Wang  */
25572de3b87aSKai Wang 
25582de3b87aSKai Wang /* 32 bit PHDR entry. */
25592de3b87aSKai Wang typedef struct {
25602de3b87aSKai Wang 	Elf32_Word	p_type;	     /* Type of segment. */
25612de3b87aSKai Wang 	Elf32_Off	p_offset;    /* File offset to segment. */
25622de3b87aSKai Wang 	Elf32_Addr	p_vaddr;     /* Virtual address in memory. */
25632de3b87aSKai Wang 	Elf32_Addr	p_paddr;     /* Physical address (if relevant). */
25642de3b87aSKai Wang 	Elf32_Word	p_filesz;    /* Size of segment in file. */
25652de3b87aSKai Wang 	Elf32_Word	p_memsz;     /* Size of segment in memory. */
25662de3b87aSKai Wang 	Elf32_Word	p_flags;     /* Segment flags. */
25672de3b87aSKai Wang 	Elf32_Word	p_align;     /* Alignment constraints. */
25682de3b87aSKai Wang } Elf32_Phdr;
25692de3b87aSKai Wang 
25702de3b87aSKai Wang /* 64 bit PHDR entry. */
25712de3b87aSKai Wang typedef struct {
25722de3b87aSKai Wang 	Elf64_Word	p_type;	     /* Type of segment. */
2573cf781b2eSEd Maste 	Elf64_Word	p_flags;     /* Segment flags. */
2574cf781b2eSEd Maste 	Elf64_Off	p_offset;    /* File offset to segment. */
2575cf781b2eSEd Maste 	Elf64_Addr	p_vaddr;     /* Virtual address in memory. */
2576cf781b2eSEd Maste 	Elf64_Addr	p_paddr;     /* Physical address (if relevant). */
2577cf781b2eSEd Maste 	Elf64_Xword	p_filesz;    /* Size of segment in file. */
2578cf781b2eSEd Maste 	Elf64_Xword	p_memsz;     /* Size of segment in memory. */
25792de3b87aSKai Wang 	Elf64_Xword	p_align;     /* Alignment constraints. */
25802de3b87aSKai Wang } Elf64_Phdr;
25812de3b87aSKai Wang 
25822de3b87aSKai Wang 
25832de3b87aSKai Wang /*
25842de3b87aSKai Wang  * Move entries, for describing data in COMMON blocks in a compact
25852de3b87aSKai Wang  * manner.
25862de3b87aSKai Wang  */
25872de3b87aSKai Wang 
25882de3b87aSKai Wang /* 32-bit move entry. */
25892de3b87aSKai Wang typedef struct {
25902de3b87aSKai Wang 	Elf32_Lword	m_value;     /* Initialization value. */
25912de3b87aSKai Wang 	Elf32_Word 	m_info;	     /* Encoded size and index. */
25922de3b87aSKai Wang 	Elf32_Word	m_poffset;   /* Offset relative to symbol. */
25932de3b87aSKai Wang 	Elf32_Half	m_repeat;    /* Repeat count. */
25942de3b87aSKai Wang 	Elf32_Half	m_stride;    /* Number of units to skip. */
25952de3b87aSKai Wang } Elf32_Move;
25962de3b87aSKai Wang 
25972de3b87aSKai Wang /* 64-bit move entry. */
25982de3b87aSKai Wang typedef struct {
25992de3b87aSKai Wang 	Elf64_Lword	m_value;     /* Initialization value. */
26002de3b87aSKai Wang 	Elf64_Xword 	m_info;	     /* Encoded size and index. */
26012de3b87aSKai Wang 	Elf64_Xword	m_poffset;   /* Offset relative to symbol. */
26022de3b87aSKai Wang 	Elf64_Half	m_repeat;    /* Repeat count. */
26032de3b87aSKai Wang 	Elf64_Half	m_stride;    /* Number of units to skip. */
26042de3b87aSKai Wang } Elf64_Move;
26052de3b87aSKai Wang 
26062de3b87aSKai Wang #define ELF32_M_SYM(I)		((I) >> 8)
26072de3b87aSKai Wang #define ELF32_M_SIZE(I)		((unsigned char) (I))
26082de3b87aSKai Wang #define ELF32_M_INFO(M, S)	(((M) << 8) + (unsigned char) (S))
26092de3b87aSKai Wang 
26102de3b87aSKai Wang #define ELF64_M_SYM(I)		((I) >> 8)
26112de3b87aSKai Wang #define ELF64_M_SIZE(I)		((unsigned char) (I))
26122de3b87aSKai Wang #define ELF64_M_INFO(M, S)	(((M) << 8) + (unsigned char) (S))
26132de3b87aSKai Wang 
26142de3b87aSKai Wang /*
26152de3b87aSKai Wang  * Section Header Table (SHDR) entries.
26162de3b87aSKai Wang  */
26172de3b87aSKai Wang 
26182de3b87aSKai Wang /* 32 bit SHDR */
26192de3b87aSKai Wang typedef struct {
26202de3b87aSKai Wang 	Elf32_Word	sh_name;     /* index of section name */
26212de3b87aSKai Wang 	Elf32_Word	sh_type;     /* section type */
26222de3b87aSKai Wang 	Elf32_Word	sh_flags;    /* section flags */
26232de3b87aSKai Wang 	Elf32_Addr	sh_addr;     /* in-memory address of section */
26242de3b87aSKai Wang 	Elf32_Off	sh_offset;   /* file offset of section */
26252de3b87aSKai Wang 	Elf32_Word	sh_size;     /* section size in bytes */
26262de3b87aSKai Wang 	Elf32_Word	sh_link;     /* section header table link */
26272de3b87aSKai Wang 	Elf32_Word	sh_info;     /* extra information */
26282de3b87aSKai Wang 	Elf32_Word	sh_addralign; /* alignment constraint */
26292de3b87aSKai Wang 	Elf32_Word	sh_entsize;   /* size for fixed-size entries */
26302de3b87aSKai Wang } Elf32_Shdr;
26312de3b87aSKai Wang 
26322de3b87aSKai Wang /* 64 bit SHDR */
26332de3b87aSKai Wang typedef struct {
26342de3b87aSKai Wang 	Elf64_Word	sh_name;     /* index of section name */
26352de3b87aSKai Wang 	Elf64_Word	sh_type;     /* section type */
26362de3b87aSKai Wang 	Elf64_Xword	sh_flags;    /* section flags */
26372de3b87aSKai Wang 	Elf64_Addr	sh_addr;     /* in-memory address of section */
26382de3b87aSKai Wang 	Elf64_Off	sh_offset;   /* file offset of section */
26392de3b87aSKai Wang 	Elf64_Xword	sh_size;     /* section size in bytes */
26402de3b87aSKai Wang 	Elf64_Word	sh_link;     /* section header table link */
26412de3b87aSKai Wang 	Elf64_Word	sh_info;     /* extra information */
26422de3b87aSKai Wang 	Elf64_Xword	sh_addralign; /* alignment constraint */
26432de3b87aSKai Wang 	Elf64_Xword	sh_entsize;  /* size for fixed-size entries */
26442de3b87aSKai Wang } Elf64_Shdr;
26452de3b87aSKai Wang 
26462de3b87aSKai Wang 
26472de3b87aSKai Wang /*
26482de3b87aSKai Wang  * Symbol table entries.
26492de3b87aSKai Wang  */
26502de3b87aSKai Wang 
26512de3b87aSKai Wang typedef struct {
26522de3b87aSKai Wang 	Elf32_Word	st_name;     /* index of symbol's name */
26532de3b87aSKai Wang 	Elf32_Addr	st_value;    /* value for the symbol */
26542de3b87aSKai Wang 	Elf32_Word	st_size;     /* size of associated data */
26552de3b87aSKai Wang 	unsigned char	st_info;     /* type and binding attributes */
26562de3b87aSKai Wang 	unsigned char	st_other;    /* visibility */
26572de3b87aSKai Wang 	Elf32_Half	st_shndx;    /* index of related section */
26582de3b87aSKai Wang } Elf32_Sym;
26592de3b87aSKai Wang 
26602de3b87aSKai Wang typedef struct {
26612de3b87aSKai Wang 	Elf64_Word	st_name;     /* index of symbol's name */
2662cf781b2eSEd Maste 	unsigned char	st_info;     /* type and binding attributes */
2663cf781b2eSEd Maste 	unsigned char	st_other;    /* visibility */
2664cf781b2eSEd Maste 	Elf64_Half	st_shndx;    /* index of related section */
2665cf781b2eSEd Maste 	Elf64_Addr	st_value;    /* value for the symbol */
2666cf781b2eSEd Maste 	Elf64_Xword	st_size;     /* size of associated data */
26672de3b87aSKai Wang } Elf64_Sym;
26682de3b87aSKai Wang 
26692de3b87aSKai Wang #define ELF32_ST_BIND(I)	((I) >> 4)
26702de3b87aSKai Wang #define ELF32_ST_TYPE(I)	((I) & 0xFU)
26712de3b87aSKai Wang #define ELF32_ST_INFO(B,T)	(((B) << 4) + ((T) & 0xF))
26722de3b87aSKai Wang 
26732de3b87aSKai Wang #define ELF64_ST_BIND(I)	((I) >> 4)
26742de3b87aSKai Wang #define ELF64_ST_TYPE(I)	((I) & 0xFU)
26752de3b87aSKai Wang #define ELF64_ST_INFO(B,T)	(((B) << 4) + ((T) & 0xF))
26762de3b87aSKai Wang 
26772de3b87aSKai Wang #define ELF32_ST_VISIBILITY(O)	((O) & 0x3)
26782de3b87aSKai Wang #define ELF64_ST_VISIBILITY(O)	((O) & 0x3)
26792de3b87aSKai Wang 
26802de3b87aSKai Wang /*
26812de3b87aSKai Wang  * Syminfo descriptors, containing additional symbol information.
26822de3b87aSKai Wang  */
26832de3b87aSKai Wang 
26842de3b87aSKai Wang /* 32-bit entry. */
26852de3b87aSKai Wang typedef struct {
26862de3b87aSKai Wang 	Elf32_Half	si_boundto;  /* Entry index with additional flags. */
26872de3b87aSKai Wang 	Elf32_Half	si_flags;    /* Flags. */
26882de3b87aSKai Wang } Elf32_Syminfo;
26892de3b87aSKai Wang 
26902de3b87aSKai Wang /* 64-bit entry. */
26912de3b87aSKai Wang typedef struct {
26922de3b87aSKai Wang 	Elf64_Half	si_boundto;  /* Entry index with additional flags. */
26932de3b87aSKai Wang 	Elf64_Half	si_flags;    /* Flags. */
26942de3b87aSKai Wang } Elf64_Syminfo;
26952de3b87aSKai Wang 
26962de3b87aSKai Wang /*
26972de3b87aSKai Wang  * Relocation descriptors.
26982de3b87aSKai Wang  */
26992de3b87aSKai Wang 
27002de3b87aSKai Wang typedef struct {
27012de3b87aSKai Wang 	Elf32_Addr	r_offset;    /* location to apply relocation to */
27022de3b87aSKai Wang 	Elf32_Word	r_info;	     /* type+section for relocation */
27032de3b87aSKai Wang } Elf32_Rel;
27042de3b87aSKai Wang 
27052de3b87aSKai Wang typedef struct {
27062de3b87aSKai Wang 	Elf32_Addr	r_offset;    /* location to apply relocation to */
27072de3b87aSKai Wang 	Elf32_Word	r_info;      /* type+section for relocation */
27082de3b87aSKai Wang 	Elf32_Sword	r_addend;    /* constant addend */
27092de3b87aSKai Wang } Elf32_Rela;
27102de3b87aSKai Wang 
27112de3b87aSKai Wang typedef struct {
27122de3b87aSKai Wang 	Elf64_Addr	r_offset;    /* location to apply relocation to */
27132de3b87aSKai Wang 	Elf64_Xword	r_info;      /* type+section for relocation */
27142de3b87aSKai Wang } Elf64_Rel;
27152de3b87aSKai Wang 
27162de3b87aSKai Wang typedef struct {
27172de3b87aSKai Wang 	Elf64_Addr	r_offset;    /* location to apply relocation to */
27182de3b87aSKai Wang 	Elf64_Xword	r_info;      /* type+section for relocation */
27192de3b87aSKai Wang 	Elf64_Sxword	r_addend;    /* constant addend */
27202de3b87aSKai Wang } Elf64_Rela;
27212de3b87aSKai Wang 
27222de3b87aSKai Wang 
27232de3b87aSKai Wang #define ELF32_R_SYM(I)		((I) >> 8)
27242de3b87aSKai Wang #define ELF32_R_TYPE(I)		((unsigned char) (I))
27252de3b87aSKai Wang #define ELF32_R_INFO(S,T)	(((S) << 8) + (unsigned char) (T))
27262de3b87aSKai Wang 
27272de3b87aSKai Wang #define ELF64_R_SYM(I)		((I) >> 32)
27282de3b87aSKai Wang #define ELF64_R_TYPE(I)		((I) & 0xFFFFFFFFUL)
27292de3b87aSKai Wang #define ELF64_R_INFO(S,T)	(((S) << 32) + ((T) & 0xFFFFFFFFUL))
27302de3b87aSKai Wang 
27312de3b87aSKai Wang /*
27322de3b87aSKai Wang  * Symbol versioning structures.
27332de3b87aSKai Wang  */
27342de3b87aSKai Wang 
27352de3b87aSKai Wang /* 32-bit structures. */
27362de3b87aSKai Wang typedef struct
27372de3b87aSKai Wang {
27382de3b87aSKai Wang 	Elf32_Word	vda_name;    /* Index to name. */
27392de3b87aSKai Wang 	Elf32_Word	vda_next;    /* Offset to next entry. */
27402de3b87aSKai Wang } Elf32_Verdaux;
27412de3b87aSKai Wang 
27422de3b87aSKai Wang typedef struct
27432de3b87aSKai Wang {
27442de3b87aSKai Wang 	Elf32_Word	vna_hash;    /* Hash value of dependency name. */
27452de3b87aSKai Wang 	Elf32_Half	vna_flags;   /* Flags. */
27462de3b87aSKai Wang 	Elf32_Half	vna_other;   /* Unused. */
27472de3b87aSKai Wang 	Elf32_Word	vna_name;    /* Offset to dependency name. */
27482de3b87aSKai Wang 	Elf32_Word	vna_next;    /* Offset to next vernaux entry. */
27492de3b87aSKai Wang } Elf32_Vernaux;
27502de3b87aSKai Wang 
27512de3b87aSKai Wang typedef struct
27522de3b87aSKai Wang {
27532de3b87aSKai Wang 	Elf32_Half	vd_version;  /* Version information. */
27542de3b87aSKai Wang 	Elf32_Half	vd_flags;    /* Flags. */
27552de3b87aSKai Wang 	Elf32_Half	vd_ndx;	     /* Index into the versym section. */
27562de3b87aSKai Wang 	Elf32_Half	vd_cnt;	     /* Number of aux entries. */
27572de3b87aSKai Wang 	Elf32_Word	vd_hash;     /* Hash value of name. */
27582de3b87aSKai Wang 	Elf32_Word	vd_aux;	     /* Offset to aux entries. */
27592de3b87aSKai Wang 	Elf32_Word	vd_next;     /* Offset to next version definition. */
27602de3b87aSKai Wang } Elf32_Verdef;
27612de3b87aSKai Wang 
27622de3b87aSKai Wang typedef struct
27632de3b87aSKai Wang {
27642de3b87aSKai Wang 	Elf32_Half	vn_version;  /* Version number. */
27652de3b87aSKai Wang 	Elf32_Half	vn_cnt;	     /* Number of aux entries. */
27662de3b87aSKai Wang 	Elf32_Word	vn_file;     /* Offset of associated file name. */
27672de3b87aSKai Wang 	Elf32_Word	vn_aux;	     /* Offset of vernaux array. */
27682de3b87aSKai Wang 	Elf32_Word	vn_next;     /* Offset of next verneed entry. */
27692de3b87aSKai Wang } Elf32_Verneed;
27702de3b87aSKai Wang 
27712de3b87aSKai Wang typedef Elf32_Half	Elf32_Versym;
27722de3b87aSKai Wang 
27732de3b87aSKai Wang /* 64-bit structures. */
27742de3b87aSKai Wang 
27752de3b87aSKai Wang typedef struct {
27762de3b87aSKai Wang 	Elf64_Word	vda_name;    /* Index to name. */
27772de3b87aSKai Wang 	Elf64_Word	vda_next;    /* Offset to next entry. */
27782de3b87aSKai Wang } Elf64_Verdaux;
27792de3b87aSKai Wang 
27802de3b87aSKai Wang typedef struct {
27812de3b87aSKai Wang 	Elf64_Word	vna_hash;    /* Hash value of dependency name. */
27822de3b87aSKai Wang 	Elf64_Half	vna_flags;   /* Flags. */
27832de3b87aSKai Wang 	Elf64_Half	vna_other;   /* Unused. */
27842de3b87aSKai Wang 	Elf64_Word	vna_name;    /* Offset to dependency name. */
27852de3b87aSKai Wang 	Elf64_Word	vna_next;    /* Offset to next vernaux entry. */
27862de3b87aSKai Wang } Elf64_Vernaux;
27872de3b87aSKai Wang 
27882de3b87aSKai Wang typedef struct {
27892de3b87aSKai Wang 	Elf64_Half	vd_version;  /* Version information. */
27902de3b87aSKai Wang 	Elf64_Half	vd_flags;    /* Flags. */
27912de3b87aSKai Wang 	Elf64_Half	vd_ndx;	     /* Index into the versym section. */
27922de3b87aSKai Wang 	Elf64_Half	vd_cnt;	     /* Number of aux entries. */
27932de3b87aSKai Wang 	Elf64_Word	vd_hash;     /* Hash value of name. */
27942de3b87aSKai Wang 	Elf64_Word	vd_aux;	     /* Offset to aux entries. */
27952de3b87aSKai Wang 	Elf64_Word	vd_next;     /* Offset to next version definition. */
27962de3b87aSKai Wang } Elf64_Verdef;
27972de3b87aSKai Wang 
27982de3b87aSKai Wang typedef struct {
27992de3b87aSKai Wang 	Elf64_Half	vn_version;  /* Version number. */
28002de3b87aSKai Wang 	Elf64_Half	vn_cnt;	     /* Number of aux entries. */
28012de3b87aSKai Wang 	Elf64_Word	vn_file;     /* Offset of associated file name. */
28022de3b87aSKai Wang 	Elf64_Word	vn_aux;	     /* Offset of vernaux array. */
28032de3b87aSKai Wang 	Elf64_Word	vn_next;     /* Offset of next verneed entry. */
28042de3b87aSKai Wang } Elf64_Verneed;
28052de3b87aSKai Wang 
28062de3b87aSKai Wang typedef Elf64_Half	Elf64_Versym;
28072de3b87aSKai Wang 
28082de3b87aSKai Wang 
28092de3b87aSKai Wang /*
28102de3b87aSKai Wang  * The header for GNU-style hash sections.
28112de3b87aSKai Wang  */
28122de3b87aSKai Wang 
28132de3b87aSKai Wang typedef struct {
28142de3b87aSKai Wang 	uint32_t	gh_nbuckets;	/* Number of hash buckets. */
28152de3b87aSKai Wang 	uint32_t	gh_symndx;	/* First visible symbol in .dynsym. */
28162de3b87aSKai Wang 	uint32_t	gh_maskwords;	/* #maskwords used in bloom filter. */
28172de3b87aSKai Wang 	uint32_t	gh_shift2;	/* Bloom filter shift count. */
28182de3b87aSKai Wang } Elf_GNU_Hash_Header;
28192de3b87aSKai Wang 
28202de3b87aSKai Wang #endif	/* _ELFDEFINITIONS_H_ */
2821