Module Name:    src
Committed By:   jkoshy
Date:           Tue Apr  6 18:38:04 UTC 2021

Added Files:
        src/external/bsd/elftoolchain/dist/common/sys: Makefile elfconstants.m4
            elfdefinitions.m4

Log Message:
Add files present in upstream revision r3943.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/external/bsd/elftoolchain/dist/common/sys/Makefile \
    src/external/bsd/elftoolchain/dist/common/sys/elfconstants.m4 \
    src/external/bsd/elftoolchain/dist/common/sys/elfdefinitions.m4

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Added files:

Index: src/external/bsd/elftoolchain/dist/common/sys/Makefile
diff -u /dev/null src/external/bsd/elftoolchain/dist/common/sys/Makefile:1.1
--- /dev/null	Tue Apr  6 18:38:04 2021
+++ src/external/bsd/elftoolchain/dist/common/sys/Makefile	Tue Apr  6 18:38:04 2021
@@ -0,0 +1,25 @@
+# Id: Makefile 3943 2021-04-05 17:03:34Z jkoshy
+
+TOP=	../..
+
+SRCS=		elfdefinitions.m4 elfconstants.m4
+INCS=		elfdefinitions.h
+INCSDIR=	/usr/include/sys
+
+CLEANFILES=	${INCS}
+
+.PHONY:	all clean clobber depend obj
+
+all:	${INCS}
+
+elfdefinitions.h:	elfdefinitions.m4 elfconstants.m4
+	m4 -I${.CURDIR} -D SRCDIR=${.CURDIR} ${M4FLAGS} \
+		elfdefinitions.m4 > ${.TARGET}
+
+depend cleandepend:
+
+clean clobber:
+	rm -f ${CLEANFILES}
+
+.include "${TOP}/mk/elftoolchain.inc.mk"
+.include "${TOP}/mk/elftoolchain.m4.mk"
Index: src/external/bsd/elftoolchain/dist/common/sys/elfconstants.m4
diff -u /dev/null src/external/bsd/elftoolchain/dist/common/sys/elfconstants.m4:1.1
--- /dev/null	Tue Apr  6 18:38:04 2021
+++ src/external/bsd/elftoolchain/dist/common/sys/elfconstants.m4	Tue Apr  6 18:38:04 2021
@@ -0,0 +1,2592 @@
+# Copyright (c) 2010,2021 Joseph Koshy
+# All rights reserved.
+
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+
+# These definitions are based on:
+# - The public specification of the ELF format as defined in the
+#   October 2009 draft of System V ABI.
+#   See: http://www.sco.com/developers/gabi/latest/ch4.intro.html
+# - The May 1998 (version 1.5) draft of "The ELF-64 object format".
+# - Processor-specific ELF ABI definitions for sparc, i386, amd64, mips,
+#   ia64, powerpc, and RISC-V processors.
+# - The "Linkers and Libraries Guide", from Sun Microsystems.
+
+define(`VCSID_ELFCONSTANTS_M4',
+	`Id: elfconstants.m4 3939 2021-04-04 20:15:13Z jkoshy')
+
+#
+# Types of capabilities.
+# 
+define(`DEFINE_CAPABILITIES',`
+DEFINE_CAPABILITY(`CA_SUNW_NULL',	0,	`ignored')
+DEFINE_CAPABILITY(`CA_SUNW_HW_1',	1,	`hardware capability')
+DEFINE_CAPABILITY(`CA_SUNW_SW_1',	2,	`software capability')')
+
+#
+# Flags used with dynamic linking entries.
+#
+define(`DEFINE_DYN_FLAGS',`
+DEFINE_DYN_FLAG(`DF_ORIGIN',           0x1,
+	`object being loaded may refer to `$ORIGIN'')
+DEFINE_DYN_FLAG(`DF_SYMBOLIC',         0x2,
+	`search library for references before executable')
+DEFINE_DYN_FLAG(`DF_TEXTREL',          0x4,
+	`relocation entries may modify text segment')
+DEFINE_DYN_FLAG(`DF_BIND_NOW',         0x8,
+	`process relocation entries at load time')
+DEFINE_DYN_FLAG(`DF_STATIC_TLS',       0x10,
+	`uses static thread-local storage')
+DEFINE_DYN_FLAG(`DF_1_BIND_NOW',       0x1,
+	`process relocation entries at load time')
+DEFINE_DYN_FLAG(`DF_1_GLOBAL',         0x2,
+	`unused')
+DEFINE_DYN_FLAG(`DF_1_GROUP',          0x4,
+	`object is a member of a group')
+DEFINE_DYN_FLAG(`DF_1_NODELETE',       0x8,
+	`object cannot be deleted from a process')
+DEFINE_DYN_FLAG(`DF_1_LOADFLTR',       0x10,
+	`immediate load filtees')
+DEFINE_DYN_FLAG(`DF_1_INITFIRST',      0x20,
+	`initialize object first')
+DEFINE_DYN_FLAG(`DF_1_NOOPEN',         0x40,
+	`disallow dlopen()')
+DEFINE_DYN_FLAG(`DF_1_ORIGIN',         0x80,
+	`object being loaded may refer to $ORIGIN')
+DEFINE_DYN_FLAG(`DF_1_DIRECT',         0x100,
+	`direct bindings enabled')
+DEFINE_DYN_FLAG(`DF_1_INTERPOSE',      0x400,
+	`object is interposer')
+DEFINE_DYN_FLAG(`DF_1_NODEFLIB',       0x800,
+	`ignore default library search path')
+DEFINE_DYN_FLAG(`DF_1_NODUMP',         0x1000,
+	`disallow dldump()')
+DEFINE_DYN_FLAG(`DF_1_CONFALT',        0x2000,
+	`object is a configuration alternative')
+DEFINE_DYN_FLAG(`DF_1_ENDFILTEE',      0x4000,
+	`filtee terminates filter search')
+DEFINE_DYN_FLAG(`DF_1_DISPRELDNE',     0x8000,
+	`displacement relocation done')
+DEFINE_DYN_FLAG(`DF_1_DISPRELPND',     0x10000,
+	`displacement relocation pending')')
+
+#
+# Dynamic linking entry types.
+#
+define(`DEFINE_DYN_TYPES',`
+DEFINE_DYN_TYPE(`DT_NULL',             0,
+	`end of array')
+DEFINE_DYN_TYPE(`DT_NEEDED',           1,
+	`names a needed library')
+DEFINE_DYN_TYPE(`DT_PLTRELSZ',         2,
+	`size in bytes of associated relocation entries')
+DEFINE_DYN_TYPE(`DT_PLTGOT',           3,
+	`address associated with the procedure linkage table')
+DEFINE_DYN_TYPE(`DT_HASH',             4,
+	`address of the symbol hash table')
+DEFINE_DYN_TYPE(`DT_STRTAB',           5,
+	`address of the string table')
+DEFINE_DYN_TYPE(`DT_SYMTAB',           6,
+	`address of the symbol table')
+DEFINE_DYN_TYPE(`DT_RELA',             7,
+	`address of the relocation table')
+DEFINE_DYN_TYPE(`DT_RELASZ',           8,
+	`size of the DT_RELA table')
+DEFINE_DYN_TYPE(`DT_RELAENT',          9,
+	`size of each DT_RELA entry')
+DEFINE_DYN_TYPE(`DT_STRSZ',            10,
+	`size of the string table')
+DEFINE_DYN_TYPE(`DT_SYMENT',           11,
+	`size of a symbol table entry')
+DEFINE_DYN_TYPE(`DT_INIT',             12,
+	`address of the initialization function')
+DEFINE_DYN_TYPE(`DT_FINI',             13,
+	`address of the finalization function')
+DEFINE_DYN_TYPE(`DT_SONAME',           14,
+	`names the shared object')
+DEFINE_DYN_TYPE(`DT_RPATH',            15,
+	`runtime library search path')
+DEFINE_DYN_TYPE(`DT_SYMBOLIC',         16,
+	`alter symbol resolution algorithm')
+DEFINE_DYN_TYPE(`DT_REL',              17,
+	`address of the DT_REL table')
+DEFINE_DYN_TYPE(`DT_RELSZ',            18,
+	`size of the DT_REL table')
+DEFINE_DYN_TYPE(`DT_RELENT',           19,
+	`size of each DT_REL entry')
+DEFINE_DYN_TYPE(`DT_PLTREL',           20,
+	`type of relocation entry in the procedure linkage table')
+DEFINE_DYN_TYPE(`DT_DEBUG',            21,
+	`used for debugging')
+DEFINE_DYN_TYPE(`DT_TEXTREL',          22,
+	`text segment may be written to during relocation')
+DEFINE_DYN_TYPE(`DT_JMPREL',           23,
+	`address of relocation entries associated with the procedure linkage table')
+DEFINE_DYN_TYPE(`DT_BIND_NOW',         24,
+	`bind symbols at loading time')
+DEFINE_DYN_TYPE(`DT_INIT_ARRAY',       25,
+	`pointers to initialization functions')
+DEFINE_DYN_TYPE(`DT_FINI_ARRAY',       26,
+	`pointers to termination functions')
+DEFINE_DYN_TYPE(`DT_INIT_ARRAYSZ',     27,
+	`size of the DT_INIT_ARRAY')
+DEFINE_DYN_TYPE(`DT_FINI_ARRAYSZ',     28,
+	`size of the DT_FINI_ARRAY')
+DEFINE_DYN_TYPE(`DT_RUNPATH',          29,
+	`index of library search path string')
+DEFINE_DYN_TYPE(`DT_FLAGS',            30,
+	`flags specific to the object being loaded')
+DEFINE_DYN_TYPE(`DT_ENCODING',         32,
+	`standard semantics')
+DEFINE_DYN_TYPE(`DT_PREINIT_ARRAY',    32,
+	`pointers to pre-initialization functions')
+DEFINE_DYN_TYPE(`DT_PREINIT_ARRAYSZ',  33,
+	`size of pre-initialization array')
+DEFINE_DYN_TYPE(`DT_MAXPOSTAGS',       34,
+	`the number of positive tags')
+DEFINE_DYN_TYPE(`DT_LOOS',             0x6000000DUL,
+	`start of OS-specific types')
+DEFINE_DYN_TYPE(`DT_SUNW_AUXILIARY',   0x6000000DUL,
+	`offset of string naming auxiliary filtees')
+DEFINE_DYN_TYPE(`DT_SUNW_RTLDINF',     0x6000000EUL,
+	`rtld internal use')
+DEFINE_DYN_TYPE(`DT_SUNW_FILTER',      0x6000000FUL,
+	`offset of string naming standard filtees')
+DEFINE_DYN_TYPE(`DT_SUNW_CAP',         0x60000010UL,
+	`address of hardware capabilities section')
+DEFINE_DYN_TYPE(`DT_SUNW_ASLR',        0x60000023UL,
+	`Address Space Layout Randomization flag')
+DEFINE_DYN_TYPE(`DT_HIOS',             0x6FFFF000UL,
+	`end of OS-specific types')
+DEFINE_DYN_TYPE(`DT_VALRNGLO',         0x6FFFFD00UL,
+	`start of range using the d_val field')
+DEFINE_DYN_TYPE(`DT_GNU_PRELINKED',    0x6FFFFDF5UL,
+	`prelinking timestamp')
+DEFINE_DYN_TYPE(`DT_GNU_CONFLICTSZ',   0x6FFFFDF6UL,
+	`size of conflict section')
+DEFINE_DYN_TYPE(`DT_GNU_LIBLISTSZ',    0x6FFFFDF7UL,
+	`size of library list')
+DEFINE_DYN_TYPE(`DT_CHECKSUM',         0x6FFFFDF8UL,
+	`checksum for the object')
+DEFINE_DYN_TYPE(`DT_PLTPADSZ',         0x6FFFFDF9UL,
+	`size of PLT padding')
+DEFINE_DYN_TYPE(`DT_MOVEENT',          0x6FFFFDFAUL,
+	`size of DT_MOVETAB entries')
+DEFINE_DYN_TYPE(`DT_MOVESZ',           0x6FFFFDFBUL,
+	`total size of the MOVETAB table')
+DEFINE_DYN_TYPE(`DT_FEATURE',          0x6FFFFDFCUL,
+	`feature values')
+DEFINE_DYN_TYPE(`DT_POSFLAG_1',        0x6FFFFDFDUL,
+	`dynamic position flags')
+DEFINE_DYN_TYPE(`DT_SYMINSZ',          0x6FFFFDFEUL,
+	`size of the DT_SYMINFO table')
+DEFINE_DYN_TYPE(`DT_SYMINENT',         0x6FFFFDFFUL,
+	`size of a DT_SYMINFO entry')
+DEFINE_DYN_TYPE(`DT_VALRNGHI',         0x6FFFFDFFUL,
+	`end of range using the d_val field')
+DEFINE_DYN_TYPE(`DT_ADDRRNGLO',        0x6FFFFE00UL,
+	`start of range using the d_ptr field')
+DEFINE_DYN_TYPE(`DT_GNU_HASH',	       0x6FFFFEF5UL,
+	`GNU style hash tables')
+DEFINE_DYN_TYPE(`DT_TLSDESC_PLT',      0x6FFFFEF6UL,
+	`location of PLT entry for TLS descriptor resolver calls')
+DEFINE_DYN_TYPE(`DT_TLSDESC_GOT',      0x6FFFFEF7UL,
+	`location of GOT entry used by TLS descriptor resolver PLT entry')
+DEFINE_DYN_TYPE(`DT_GNU_CONFLICT',     0x6FFFFEF8UL,
+	`address of conflict section')
+DEFINE_DYN_TYPE(`DT_GNU_LIBLIST',      0x6FFFFEF9UL,
+	`address of conflict section')
+DEFINE_DYN_TYPE(`DT_CONFIG',           0x6FFFFEFAUL,
+	`configuration file')
+DEFINE_DYN_TYPE(`DT_DEPAUDIT',         0x6FFFFEFBUL,
+	`string defining audit libraries')
+DEFINE_DYN_TYPE(`DT_AUDIT',            0x6FFFFEFCUL,
+	`string defining audit libraries')
+DEFINE_DYN_TYPE(`DT_PLTPAD',           0x6FFFFEFDUL,
+	`PLT padding')
+DEFINE_DYN_TYPE(`DT_MOVETAB',          0x6FFFFEFEUL,
+	`address of a move table')
+DEFINE_DYN_TYPE(`DT_SYMINFO',          0x6FFFFEFFUL,
+	`address of the symbol information table')
+DEFINE_DYN_TYPE(`DT_ADDRRNGHI',        0x6FFFFEFFUL,
+	`end of range using the d_ptr field')
+DEFINE_DYN_TYPE(`DT_VERSYM',	       0x6FFFFFF0UL,
+	`address of the version section')
+DEFINE_DYN_TYPE(`DT_RELACOUNT',        0x6FFFFFF9UL,
+	`count of RELA relocations')
+DEFINE_DYN_TYPE(`DT_RELCOUNT',         0x6FFFFFFAUL,
+	`count of REL relocations')
+DEFINE_DYN_TYPE(`DT_FLAGS_1',          0x6FFFFFFBUL,
+	`flag values')
+DEFINE_DYN_TYPE(`DT_VERDEF',	       0x6FFFFFFCUL,
+	`address of the version definition segment')
+DEFINE_DYN_TYPE(`DT_VERDEFNUM',	       0x6FFFFFFDUL,
+	`the number of version definition entries')
+DEFINE_DYN_TYPE(`DT_VERNEED',	       0x6FFFFFFEUL,
+	`address of section with needed versions')
+DEFINE_DYN_TYPE(`DT_VERNEEDNUM',       0x6FFFFFFFUL,
+	`the number of version needed entries')
+DEFINE_DYN_TYPE(`DT_LOPROC',           0x70000000UL,
+	`start of processor-specific types')
+DEFINE_DYN_TYPE(`DT_ARM_SYMTABSZ',     0x70000001UL,
+	`number of entries in the dynamic symbol table')
+DEFINE_DYN_TYPE(`DT_SPARC_REGISTER',   0x70000001UL,
+	`index of an STT_SPARC_REGISTER symbol')
+DEFINE_DYN_TYPE(`DT_ARM_PREEMPTMAP',   0x70000002UL,
+	`address of the preemption map')
+DEFINE_DYN_TYPE(`DT_MIPS_RLD_VERSION', 0x70000001UL,
+	`version ID for runtime linker interface')
+DEFINE_DYN_TYPE(`DT_MIPS_TIME_STAMP',  0x70000002UL,
+	`timestamp')
+DEFINE_DYN_TYPE(`DT_MIPS_ICHECKSUM',   0x70000003UL,
+	`checksum of all external strings and common sizes')
+DEFINE_DYN_TYPE(`DT_MIPS_IVERSION',    0x70000004UL,
+	`string table index of a version string')
+DEFINE_DYN_TYPE(`DT_MIPS_FLAGS',       0x70000005UL,
+	`MIPS-specific flags')
+DEFINE_DYN_TYPE(`DT_MIPS_BASE_ADDRESS', 0x70000006UL,
+	`base address for the executable/DSO')
+DEFINE_DYN_TYPE(`DT_MIPS_CONFLICT',    0x70000008UL,
+	`address of .conflict section')
+DEFINE_DYN_TYPE(`DT_MIPS_LIBLIST',     0x70000009UL,
+	`address of .liblist section')
+DEFINE_DYN_TYPE(`DT_MIPS_LOCAL_GOTNO', 0x7000000AUL,
+	`number of local GOT entries')
+DEFINE_DYN_TYPE(`DT_MIPS_CONFLICTNO',  0x7000000BUL,
+	`number of entries in the .conflict section')
+DEFINE_DYN_TYPE(`DT_MIPS_LIBLISTNO',   0x70000010UL,
+	`number of entries in the .liblist section')
+DEFINE_DYN_TYPE(`DT_MIPS_SYMTABNO',    0x70000011UL,
+	`number of entries in the .dynsym section')
+DEFINE_DYN_TYPE(`DT_MIPS_UNREFEXTNO',  0x70000012UL,
+	`index of first external dynamic symbol not referenced locally')
+DEFINE_DYN_TYPE(`DT_MIPS_GOTSYM',      0x70000013UL,
+	`index of first dynamic symbol corresponds to a GOT entry')
+DEFINE_DYN_TYPE(`DT_MIPS_HIPAGENO',    0x70000014UL,
+	`number of page table entries in GOT')
+DEFINE_DYN_TYPE(`DT_MIPS_RLD_MAP',     0x70000016UL,
+	`address of runtime linker map')
+DEFINE_DYN_TYPE(`DT_MIPS_DELTA_CLASS', 0x70000017UL,
+	`Delta C++ class definition')
+DEFINE_DYN_TYPE(`DT_MIPS_DELTA_CLASS_NO', 0x70000018UL,
+	`number of entries in DT_MIPS_DELTA_CLASS')
+DEFINE_DYN_TYPE(`DT_MIPS_DELTA_INSTANCE', 0x70000019UL,
+	`Delta C++ class instances')
+DEFINE_DYN_TYPE(`DT_MIPS_DELTA_INSTANCE_NO', 0x7000001AUL,
+	`number of entries in DT_MIPS_DELTA_INSTANCE')
+DEFINE_DYN_TYPE(`DT_MIPS_DELTA_RELOC', 0x7000001BUL,
+	`Delta relocations')
+DEFINE_DYN_TYPE(`DT_MIPS_DELTA_RELOC_NO', 0x7000001CUL,
+	`number of entries in DT_MIPS_DELTA_RELOC')
+DEFINE_DYN_TYPE(`DT_MIPS_DELTA_SYM',   0x7000001DUL,
+	`Delta symbols referred by Delta relocations')
+DEFINE_DYN_TYPE(`DT_MIPS_DELTA_SYM_NO', 0x7000001EUL,
+	`number of entries in DT_MIPS_DELTA_SYM')
+DEFINE_DYN_TYPE(`DT_MIPS_DELTA_CLASSSYM', 0x70000020UL,
+	`Delta symbols for class declarations')
+DEFINE_DYN_TYPE(`DT_MIPS_DELTA_CLASSSYM_NO', 0x70000021UL,
+	`number of entries in DT_MIPS_DELTA_CLASSSYM')
+DEFINE_DYN_TYPE(`DT_MIPS_CXX_FLAGS',   0x70000022UL,
+	`C++ flavor flags')
+DEFINE_DYN_TYPE(`DT_MIPS_PIXIE_INIT',  0x70000023UL,
+	`address of an initialization routine created by pixie')
+DEFINE_DYN_TYPE(`DT_MIPS_SYMBOL_LIB',  0x70000024UL,
+	`address of .MIPS.symlib section')
+DEFINE_DYN_TYPE(`DT_MIPS_LOCALPAGE_GOTIDX', 0x70000025UL,
+	`GOT index of first page table entry for a segment')
+DEFINE_DYN_TYPE(`DT_MIPS_LOCAL_GOTIDX', 0x70000026UL,
+	`GOT index of first page table entry for a local symbol')
+DEFINE_DYN_TYPE(`DT_MIPS_HIDDEN_GOTIDX', 0x70000027UL,
+	`GOT index of first page table entry for a hidden symbol')
+DEFINE_DYN_TYPE(`DT_MIPS_PROTECTED_GOTIDX', 0x70000028UL,
+	`GOT index of first page table entry for a protected symbol')
+DEFINE_DYN_TYPE(`DT_MIPS_OPTIONS',     0x70000029UL,
+	`address of .MIPS.options section')
+DEFINE_DYN_TYPE(`DT_MIPS_INTERFACE',   0x7000002AUL,
+	`address of .MIPS.interface section')
+DEFINE_DYN_TYPE(`DT_MIPS_DYNSTR_ALIGN', 0x7000002BUL,
+	`???')
+DEFINE_DYN_TYPE(`DT_MIPS_INTERFACE_SIZE', 0x7000002CUL,
+	`size of .MIPS.interface section')
+DEFINE_DYN_TYPE(`DT_MIPS_RLD_TEXT_RESOLVE_ADDR', 0x7000002DUL,
+	`address of _rld_text_resolve in GOT')
+DEFINE_DYN_TYPE(`DT_MIPS_PERF_SUFFIX', 0x7000002EUL,
+	`default suffix of DSO to be appended by dlopen')
+DEFINE_DYN_TYPE(`DT_MIPS_COMPACT_SIZE', 0x7000002FUL,
+	`size of a ucode compact relocation record (o32)')
+DEFINE_DYN_TYPE(`DT_MIPS_GP_VALUE',    0x70000030UL,
+	`GP value of a specified GP relative range')
+DEFINE_DYN_TYPE(`DT_MIPS_AUX_DYNAMIC', 0x70000031UL,
+	`address of an auxiliary dynamic table')
+DEFINE_DYN_TYPE(`DT_MIPS_PLTGOT',      0x70000032UL,
+	`address of the PLTGOT')
+DEFINE_DYN_TYPE(`DT_MIPS_RLD_OBJ_UPDATE', 0x70000033UL,
+	`object list update callback')
+DEFINE_DYN_TYPE(`DT_MIPS_RWPLT',       0x70000034UL,
+	`address of a writable PLT')
+DEFINE_DYN_TYPE(`DT_PPC_GOT',          0x70000000UL,
+	`value of _GLOBAL_OFFSET_TABLE_')
+DEFINE_DYN_TYPE(`DT_PPC_TLSOPT',       0x70000001UL,
+	`TLS descriptor should be optimized')
+DEFINE_DYN_TYPE(`DT_PPC64_GLINK',      0x70000000UL,
+	`address of .glink section')
+DEFINE_DYN_TYPE(`DT_PPC64_OPD',        0x70000001UL,
+	`address of .opd section')
+DEFINE_DYN_TYPE(`DT_PPC64_OPDSZ',      0x70000002UL,
+	`size of .opd section')
+DEFINE_DYN_TYPE(`DT_PPC64_TLSOPT',     0x70000003UL,
+	`TLS descriptor should be optimized')
+DEFINE_DYN_TYPE(`DT_AUXILIARY',        0x7FFFFFFDUL,
+	`offset of string naming auxiliary filtees')
+DEFINE_DYN_TYPE(`DT_USED',             0x7FFFFFFEUL,
+	`ignored')
+DEFINE_DYN_TYPE(`DT_FILTER',           0x7FFFFFFFUL,
+	`index of string naming filtees')
+DEFINE_DYN_TYPE(`DT_HIPROC',           0x7FFFFFFFUL,
+	`end of processor-specific types')
+')
+
+define(`DEFINE_DYN_TYPE_ALIASES',`
+DEFINE_DYN_TYPE_ALIAS(`DT_DEPRECATED_SPARC_REGISTER', `DT_SPARC_REGISTER')
+')
+
+#
+# Flags used in the executable header (field: e_flags).
+#
+define(`DEFINE_EHDR_FLAGS',`
+DEFINE_EHDR_FLAG(EF_ARM_RELEXEC,      0x00000001UL,
+	`dynamic segment describes only how to relocate segments')
+DEFINE_EHDR_FLAG(EF_ARM_HASENTRY,     0x00000002UL,
+	`e_entry contains a program entry point')
+DEFINE_EHDR_FLAG(EF_ARM_SYMSARESORTED, 0x00000004UL,
+	`subsection of symbol table is sorted by symbol value')
+DEFINE_EHDR_FLAG(EF_ARM_DYNSYMSUSESEGIDX, 0x00000008UL,
+	`dynamic symbol st_shndx = containing segment index + 1')
+DEFINE_EHDR_FLAG(EF_ARM_MAPSYMSFIRST, 0x00000010UL,
+	`mapping symbols precede other local symbols in symtab')
+DEFINE_EHDR_FLAG(EF_ARM_BE8,          0x00800000UL,
+	`file contains BE-8 code')
+DEFINE_EHDR_FLAG(EF_ARM_LE8,          0x00400000UL,
+	`file contains LE-8 code')
+DEFINE_EHDR_FLAG(EF_ARM_EABIMASK,     0xFF000000UL,
+	`mask for ARM EABI version number (0 denotes GNU or unknown)')
+DEFINE_EHDR_FLAG(EF_ARM_EABI_UNKNOWN, 0x00000000UL,
+	`Unknown or GNU ARM EABI version number')
+DEFINE_EHDR_FLAG(EF_ARM_EABI_VER1,    0x01000000UL,
+	`ARM EABI version 1')
+DEFINE_EHDR_FLAG(EF_ARM_EABI_VER2,    0x02000000UL,
+	`ARM EABI version 2')
+DEFINE_EHDR_FLAG(EF_ARM_EABI_VER3,    0x03000000UL,
+	`ARM EABI version 3')
+DEFINE_EHDR_FLAG(EF_ARM_EABI_VER4,    0x04000000UL,
+	`ARM EABI version 4')
+DEFINE_EHDR_FLAG(EF_ARM_EABI_VER5,    0x05000000UL,
+	`ARM EABI version 5')
+DEFINE_EHDR_FLAG(EF_ARM_INTERWORK,    0x00000004UL,
+	`GNU EABI extension')
+DEFINE_EHDR_FLAG(EF_ARM_APCS_26,      0x00000008UL,
+	`GNU EABI extension')
+DEFINE_EHDR_FLAG(EF_ARM_APCS_FLOAT,   0x00000010UL,
+	`GNU EABI extension')
+DEFINE_EHDR_FLAG(EF_ARM_PIC,          0x00000020UL,
+	`GNU EABI extension')
+DEFINE_EHDR_FLAG(EF_ARM_ALIGN8,       0x00000040UL,
+	`GNU EABI extension')
+DEFINE_EHDR_FLAG(EF_ARM_NEW_ABI,      0x00000080UL,
+	`GNU EABI extension')
+DEFINE_EHDR_FLAG(EF_ARM_OLD_ABI,      0x00000100UL,
+	`GNU EABI extension')
+DEFINE_EHDR_FLAG(EF_ARM_SOFT_FLOAT,   0x00000200UL,
+	`GNU EABI extension')
+DEFINE_EHDR_FLAG(EF_ARM_VFP_FLOAT,    0x00000400UL,
+	`GNU EABI extension')
+DEFINE_EHDR_FLAG(EF_ARM_MAVERICK_FLOAT, 0x00000800UL,
+	`GNU EABI extension')
+DEFINE_EHDR_FLAG(EF_MIPS_NOREORDER,   0x00000001UL,
+	`at least one .noreorder directive appeared in the source')
+DEFINE_EHDR_FLAG(EF_MIPS_PIC,         0x00000002UL,
+	`file contains position independent code')
+DEFINE_EHDR_FLAG(EF_MIPS_CPIC,        0x00000004UL,
+	`file code uses standard conventions for calling PIC')
+DEFINE_EHDR_FLAG(EF_MIPS_UCODE,       0x00000010UL,
+	`file contains UCODE (obsolete)')
+DEFINE_EHDR_FLAG(EF_MIPS_ABI,	      0x00007000UL,
+	`Application binary interface, see E_MIPS_* values')
+DEFINE_EHDR_FLAG(EF_MIPS_ABI2,        0x00000020UL,
+	`file follows MIPS III 32-bit ABI')
+DEFINE_EHDR_FLAG(EF_MIPS_OPTIONS_FIRST, 0x00000080UL,
+	`ld(1) should process .MIPS.options section first')
+DEFINE_EHDR_FLAG(EF_MIPS_ARCH_ASE,    0x0F000000UL,
+	`file uses application-specific architectural extensions')
+DEFINE_EHDR_FLAG(EF_MIPS_ARCH_ASE_MDMX, 0x08000000UL,
+	`file uses MDMX multimedia extensions')
+DEFINE_EHDR_FLAG(EF_MIPS_ARCH_ASE_M16, 0x04000000UL,
+	`file uses MIPS-16 ISA extensions')
+DEFINE_EHDR_FLAG(EF_MIPS_ARCH_ASE_MICROMIPS, 0x02000000UL,
+	`MicroMIPS architecture')
+DEFINE_EHDR_FLAG(EF_MIPS_ARCH,         0xF0000000UL,
+	`4-bit MIPS architecture field')
+DEFINE_EHDR_FLAG(EF_MIPS_ARCH_1,	0x00000000UL,
+	`MIPS I instruction set')
+DEFINE_EHDR_FLAG(EF_MIPS_ARCH_2,	0x10000000UL,
+	`MIPS II instruction set')
+DEFINE_EHDR_FLAG(EF_MIPS_ARCH_3,	0x20000000UL,
+	`MIPS III instruction set')
+DEFINE_EHDR_FLAG(EF_MIPS_ARCH_4,	0x30000000UL,
+	`MIPS IV instruction set')
+DEFINE_EHDR_FLAG(EF_MIPS_ARCH_5,	0x40000000UL,
+	`Never introduced')
+DEFINE_EHDR_FLAG(EF_MIPS_ARCH_32,	0x50000000UL,
+	`Mips32 Revision 1')
+DEFINE_EHDR_FLAG(EF_MIPS_ARCH_64,	0x60000000UL,
+	`Mips64 Revision 1')
+DEFINE_EHDR_FLAG(EF_MIPS_ARCH_32R2,	0x70000000UL,
+	`Mips32 Revision 2')
+DEFINE_EHDR_FLAG(EF_MIPS_ARCH_64R2,	0x80000000UL,
+	`Mips64 Revision 2')
+DEFINE_EHDR_FLAG(EF_PPC_EMB,          0x80000000UL,
+	`Embedded PowerPC flag')
+DEFINE_EHDR_FLAG(EF_PPC_RELOCATABLE,  0x00010000UL,
+	`-mrelocatable flag')
+DEFINE_EHDR_FLAG(EF_PPC_RELOCATABLE_LIB, 0x00008000UL,
+	`-mrelocatable-lib flag')
+DEFINE_EHDR_FLAG(EF_RISCV_RVC,	    0x00000001UL,
+	`Compressed instruction extension')
+DEFINE_EHDR_FLAG(EF_RISCV_FLOAT_ABI_MASK, 0x00000006UL,
+	`Floating point ABI')
+DEFINE_EHDR_FLAG(EF_RISCV_FLOAT_ABI_SOFT, 0x00000000UL,
+	`Software emulated floating point')
+DEFINE_EHDR_FLAG(EF_RISCV_FLOAT_ABI_SINGLE, 0x00000002UL,
+	`Single precision floating point')
+DEFINE_EHDR_FLAG(EF_RISCV_FLOAT_ABI_DOUBLE, 0x00000004UL,
+	`Double precision floating point')
+DEFINE_EHDR_FLAG(EF_RISCV_FLOAT_ABI_QUAD, 0x00000006UL,
+	`Quad precision floating point')
+DEFINE_EHDR_FLAG(EF_RISCV_RVE,	    0x00000008UL,
+	`Compressed instruction ABI')
+DEFINE_EHDR_FLAG(EF_RISCV_TSO,	    0x00000010UL,
+	`RVTSO memory consistency model')
+DEFINE_EHDR_FLAG(EF_SPARC_EXT_MASK,   0x00ffff00UL,
+	`Vendor Extension mask')
+DEFINE_EHDR_FLAG(EF_SPARC_32PLUS,     0x00000100UL,
+	`Generic V8+ features')
+DEFINE_EHDR_FLAG(EF_SPARC_SUN_US1,    0x00000200UL,
+	`Sun UltraSPARCTM 1 Extensions')
+DEFINE_EHDR_FLAG(EF_SPARC_HAL_R1,     0x00000400UL,
+	`HAL R1 Extensions')
+DEFINE_EHDR_FLAG(EF_SPARC_SUN_US3,    0x00000800UL,
+	`Sun UltraSPARC 3 Extensions')
+DEFINE_EHDR_FLAG(EF_SPARCV9_MM,       0x00000003UL,
+	`Mask for Memory Model')
+DEFINE_EHDR_FLAG(EF_SPARCV9_TSO,      0x00000000UL,
+	`Total Store Ordering')
+DEFINE_EHDR_FLAG(EF_SPARCV9_PSO,      0x00000001UL,
+	`Partial Store Ordering')
+DEFINE_EHDR_FLAG(EF_SPARCV9_RMO,      0x00000002UL,
+	`Relaxed Memory Ordering')
+')
+
+#
+# Offsets in the `ei_ident[]` field of an ELF executable header.
+#
+define(`DEFINE_EI_OFFSETS',`
+DEFINE_EI_OFFSET(EI_MAG0,     0,
+	`magic number')
+DEFINE_EI_OFFSET(EI_MAG1,     1,
+	`magic number')
+DEFINE_EI_OFFSET(EI_MAG2,     2,
+	`magic number')
+DEFINE_EI_OFFSET(EI_MAG3,     3,
+	`magic number')
+DEFINE_EI_OFFSET(EI_CLASS,    4,
+	`file class')
+DEFINE_EI_OFFSET(EI_DATA,     5,
+	`data encoding')
+DEFINE_EI_OFFSET(EI_VERSION,  6,
+	`file version')
+DEFINE_EI_OFFSET(EI_OSABI,    7,
+	`OS ABI kind')
+DEFINE_EI_OFFSET(EI_ABIVERSION, 8,
+	`OS ABI version')
+DEFINE_EI_OFFSET(EI_PAD,	    9,
+	`padding start')
+DEFINE_EI_OFFSET(EI_NIDENT,  16,
+	`total size')
+')
+
+#
+# The ELF class of an object.
+#
+define(`DEFINE_ELF_CLASSES',`
+DEFINE_ELF_CLASS(ELFCLASSNONE, 0,
+	`Unknown ELF class')
+DEFINE_ELF_CLASS(ELFCLASS32,   1,
+	`32 bit objects')
+DEFINE_ELF_CLASS(ELFCLASS64,   2,
+	`64 bit objects')
+')
+
+#
+# Endianness of data in an ELF object.
+#
+define(`DEFINE_ELF_DATA_ENDIANNESSES',`
+DEFINE_ELF_DATA_ENDIANNESS(ELFDATANONE, 0,
+	`Unknown data endianness')
+DEFINE_ELF_DATA_ENDIANNESS(ELFDATA2LSB, 1,
+	`little endian')
+DEFINE_ELF_DATA_ENDIANNESS(ELFDATA2MSB, 2,
+	`big endian')
+')
+
+
+#
+# Values of the magic numbers used in identification array.
+#
+changequote({,})
+define({DEFINE_ELF_MAGIC_VALUES},{
+DEFINE_ELF_MAGIC_VALUE(ELFMAG0, 0x7FU)
+DEFINE_ELF_MAGIC_VALUE(ELFMAG1, 'E')
+DEFINE_ELF_MAGIC_VALUE(ELFMAG2, 'L')
+DEFINE_ELF_MAGIC_VALUE(ELFMAG3, 'F')
+})
+changequote
+
+#
+# ELF OS ABI field.
+#
+define(`DEFINE_ELF_OSABIS',`
+DEFINE_ELF_OSABI(ELFOSABI_NONE,       0,
+	`No extensions or unspecified')
+DEFINE_ELF_OSABI(ELFOSABI_SYSV,       0,
+	`SYSV')
+DEFINE_ELF_OSABI(ELFOSABI_HPUX,       1,
+	`Hewlett-Packard HP-UX')
+DEFINE_ELF_OSABI(ELFOSABI_NETBSD,     2,
+	`NetBSD')
+DEFINE_ELF_OSABI(ELFOSABI_GNU,        3,
+	`GNU')
+DEFINE_ELF_OSABI(ELFOSABI_HURD,       4,
+	`GNU/HURD')
+DEFINE_ELF_OSABI(ELFOSABI_86OPEN,     5,
+	`86Open Common ABI')
+DEFINE_ELF_OSABI(ELFOSABI_SOLARIS,    6,
+	`Sun Solaris')
+DEFINE_ELF_OSABI(ELFOSABI_AIX,        7,
+	`AIX')
+DEFINE_ELF_OSABI(ELFOSABI_IRIX,       8,
+	`IRIX')
+DEFINE_ELF_OSABI(ELFOSABI_FREEBSD,    9,
+	`FreeBSD')
+DEFINE_ELF_OSABI(ELFOSABI_TRU64,      10,
+	`Compaq TRU64 UNIX')
+DEFINE_ELF_OSABI(ELFOSABI_MODESTO,    11,
+	`Novell Modesto')
+DEFINE_ELF_OSABI(ELFOSABI_OPENBSD,    12,
+	`Open BSD')
+DEFINE_ELF_OSABI(ELFOSABI_OPENVMS,    13,
+	`Open VMS')
+DEFINE_ELF_OSABI(ELFOSABI_NSK,        14,
+	`Hewlett-Packard Non-Stop Kernel')
+DEFINE_ELF_OSABI(ELFOSABI_AROS,       15,
+	`Amiga Research OS')
+DEFINE_ELF_OSABI(ELFOSABI_FENIXOS,    16,
+	`The FenixOS highly scalable multi-core OS')
+DEFINE_ELF_OSABI(ELFOSABI_CLOUDABI,   17,
+	`Nuxi CloudABI')
+DEFINE_ELF_OSABI(ELFOSABI_OPENVOS,    18,
+	`Stratus Technologies OpenVOS')
+DEFINE_ELF_OSABI(ELFOSABI_ARM_AEABI,  64,
+	`ARM specific symbol versioning extensions')
+DEFINE_ELF_OSABI(ELFOSABI_ARM,        97,
+	`ARM ABI')
+DEFINE_ELF_OSABI(ELFOSABI_STANDALONE, 255,
+	`Standalone (embedded) application')
+')
+
+# OS ABI aliases.
+define(`DEFINE_ELF_OSABI_ALIASES',`
+DEFINE_ELF_OSABI_ALIAS(ELFOSABI_LINUX,	ELFOSABI_GNU)
+')
+
+#
+# ELF Machine types: (EM_*).
+#
+define(`DEFINE_ELF_MACHINE_TYPES',`
+DEFINE_ELF_MACHINE_TYPE(EM_NONE,             0,
+	`No machine')
+DEFINE_ELF_MACHINE_TYPE(EM_M32,              1,
+	`AT&T WE 32100')
+DEFINE_ELF_MACHINE_TYPE(EM_SPARC,            2,
+	`SPARC')
+DEFINE_ELF_MACHINE_TYPE(EM_386,              3,
+	`Intel 80386')
+DEFINE_ELF_MACHINE_TYPE(EM_68K,              4,
+	`Motorola 68000')
+DEFINE_ELF_MACHINE_TYPE(EM_88K,              5,
+	`Motorola 88000')
+DEFINE_ELF_MACHINE_TYPE(EM_IAMCU,            6,
+	`Intel MCU')
+DEFINE_ELF_MACHINE_TYPE(EM_860,              7,
+	`Intel 80860')
+DEFINE_ELF_MACHINE_TYPE(EM_MIPS,             8,
+	`MIPS I Architecture')
+DEFINE_ELF_MACHINE_TYPE(EM_S370,             9,
+	`IBM System/370 Processor')
+DEFINE_ELF_MACHINE_TYPE(EM_MIPS_RS3_LE,      10,
+	`MIPS RS3000 Little-endian')
+DEFINE_ELF_MACHINE_TYPE(EM_PARISC,           15,
+	`Hewlett-Packard PA-RISC')
+DEFINE_ELF_MACHINE_TYPE(EM_VPP500,           17,
+	`Fujitsu VPP500')
+DEFINE_ELF_MACHINE_TYPE(EM_SPARC32PLUS,      18,
+	`Enhanced instruction set SPARC')
+DEFINE_ELF_MACHINE_TYPE(EM_960,              19,
+	`Intel 80960')
+DEFINE_ELF_MACHINE_TYPE(EM_PPC,              20,
+	`PowerPC')
+DEFINE_ELF_MACHINE_TYPE(EM_PPC64,            21,
+	`64-bit PowerPC')
+DEFINE_ELF_MACHINE_TYPE(EM_S390,             22,
+	`IBM System/390 Processor')
+DEFINE_ELF_MACHINE_TYPE(EM_SPU,              23,
+	`IBM SPU/SPC')
+DEFINE_ELF_MACHINE_TYPE(EM_V800,             36,
+	`NEC V800')
+DEFINE_ELF_MACHINE_TYPE(EM_FR20,             37,
+	`Fujitsu FR20')
+DEFINE_ELF_MACHINE_TYPE(EM_RH32,             38,
+	`TRW RH-32')
+DEFINE_ELF_MACHINE_TYPE(EM_RCE,              39,
+	`Motorola RCE')
+DEFINE_ELF_MACHINE_TYPE(EM_ARM,              40,
+	`Advanced RISC Machines ARM')
+DEFINE_ELF_MACHINE_TYPE(EM_ALPHA,            41,
+	`Digital Alpha')
+DEFINE_ELF_MACHINE_TYPE(EM_SH,               42,
+	`Hitachi SH')
+DEFINE_ELF_MACHINE_TYPE(EM_SPARCV9,          43,
+	`SPARC Version 9')
+DEFINE_ELF_MACHINE_TYPE(EM_TRICORE,          44,
+	`Siemens TriCore embedded processor')
+DEFINE_ELF_MACHINE_TYPE(EM_ARC,              45,
+	`Argonaut RISC Core, Argonaut Technologies Inc.')
+DEFINE_ELF_MACHINE_TYPE(EM_H8_300,           46,
+	`Hitachi H8/300')
+DEFINE_ELF_MACHINE_TYPE(EM_H8_300H,          47,
+	`Hitachi H8/300H')
+DEFINE_ELF_MACHINE_TYPE(EM_H8S,              48,
+	`Hitachi H8S')
+DEFINE_ELF_MACHINE_TYPE(EM_H8_500,           49,
+	`Hitachi H8/500')
+DEFINE_ELF_MACHINE_TYPE(EM_IA_64,            50,
+	`Intel IA-64 processor architecture')
+DEFINE_ELF_MACHINE_TYPE(EM_MIPS_X,           51,
+	`Stanford MIPS-X')
+DEFINE_ELF_MACHINE_TYPE(EM_COLDFIRE,         52,
+	`Motorola ColdFire')
+DEFINE_ELF_MACHINE_TYPE(EM_68HC12,           53,
+	`Motorola M68HC12')
+DEFINE_ELF_MACHINE_TYPE(EM_MMA,              54,
+	`Fujitsu MMA Multimedia Accelerator')
+DEFINE_ELF_MACHINE_TYPE(EM_PCP,              55,
+	`Siemens PCP')
+DEFINE_ELF_MACHINE_TYPE(EM_NCPU,             56,
+	`Sony nCPU embedded RISC processor')
+DEFINE_ELF_MACHINE_TYPE(EM_NDR1,             57,
+	`Denso NDR1 microprocessor')
+DEFINE_ELF_MACHINE_TYPE(EM_STARCORE,         58,
+	`Motorola Star*Core processor')
+DEFINE_ELF_MACHINE_TYPE(EM_ME16,             59,
+	`Toyota ME16 processor')
+DEFINE_ELF_MACHINE_TYPE(EM_ST100,            60,
+	`STMicroelectronics ST100 processor')
+DEFINE_ELF_MACHINE_TYPE(EM_TINYJ,            61,
+	`Advanced Logic Corp. TinyJ embedded processor family')
+DEFINE_ELF_MACHINE_TYPE(EM_X86_64,           62,
+	`AMD x86-64 architecture')
+DEFINE_ELF_MACHINE_TYPE(EM_PDSP,             63,
+	`Sony DSP Processor')
+DEFINE_ELF_MACHINE_TYPE(EM_PDP10,            64,
+	`Digital Equipment Corp. PDP-10')
+DEFINE_ELF_MACHINE_TYPE(EM_PDP11,            65,
+	`Digital Equipment Corp. PDP-11')
+DEFINE_ELF_MACHINE_TYPE(EM_FX66,             66,
+	`Siemens FX66 microcontroller')
+DEFINE_ELF_MACHINE_TYPE(EM_ST9PLUS,          67,
+	`STMicroelectronics ST9+ 8/16 bit microcontroller')
+DEFINE_ELF_MACHINE_TYPE(EM_ST7,              68,
+	`STMicroelectronics ST7 8-bit microcontroller')
+DEFINE_ELF_MACHINE_TYPE(EM_68HC16,           69,
+	`Motorola MC68HC16 Microcontroller')
+DEFINE_ELF_MACHINE_TYPE(EM_68HC11,           70,
+	`Motorola MC68HC11 Microcontroller')
+DEFINE_ELF_MACHINE_TYPE(EM_68HC08,           71,
+	`Motorola MC68HC08 Microcontroller')
+DEFINE_ELF_MACHINE_TYPE(EM_68HC05,           72,
+	`Motorola MC68HC05 Microcontroller')
+DEFINE_ELF_MACHINE_TYPE(EM_SVX,              73,
+	`Silicon Graphics SVx')
+DEFINE_ELF_MACHINE_TYPE(EM_ST19,             74,
+	`STMicroelectronics ST19 8-bit microcontroller')
+DEFINE_ELF_MACHINE_TYPE(EM_VAX,              75,
+	`Digital VAX')
+DEFINE_ELF_MACHINE_TYPE(EM_CRIS,             76,
+	`Axis Communications 32-bit embedded processor')
+DEFINE_ELF_MACHINE_TYPE(EM_JAVELIN,          77,
+	`Infineon Technologies 32-bit embedded processor')
+DEFINE_ELF_MACHINE_TYPE(EM_FIREPATH,         78,
+	`Element 14 64-bit DSP Processor')
+DEFINE_ELF_MACHINE_TYPE(EM_ZSP,              79,
+	`LSI Logic 16-bit DSP Processor')
+DEFINE_ELF_MACHINE_TYPE(EM_MMIX,             80,
+	`Educational 64-bit processor by Donald Knuth')
+DEFINE_ELF_MACHINE_TYPE(EM_HUANY,            81,
+	`Harvard University machine-independent object files')
+DEFINE_ELF_MACHINE_TYPE(EM_PRISM,            82,
+	`SiTera Prism')
+DEFINE_ELF_MACHINE_TYPE(EM_AVR,              83,
+	`Atmel AVR 8-bit microcontroller')
+DEFINE_ELF_MACHINE_TYPE(EM_FR30,             84,
+	`Fujitsu FR30')
+DEFINE_ELF_MACHINE_TYPE(EM_D10V,             85,
+	`Mitsubishi D10V')
+DEFINE_ELF_MACHINE_TYPE(EM_D30V,             86,
+	`Mitsubishi D30V')
+DEFINE_ELF_MACHINE_TYPE(EM_V850,             87,
+	`NEC v850')
+DEFINE_ELF_MACHINE_TYPE(EM_M32R,             88,
+	`Mitsubishi M32R')
+DEFINE_ELF_MACHINE_TYPE(EM_MN10300,          89,
+	`Matsushita MN10300')
+DEFINE_ELF_MACHINE_TYPE(EM_MN10200,          90,
+	`Matsushita MN10200')
+DEFINE_ELF_MACHINE_TYPE(EM_PJ,               91,
+	`picoJava')
+DEFINE_ELF_MACHINE_TYPE(EM_OPENRISC,         92,
+	`OpenRISC 32-bit embedded processor')
+DEFINE_ELF_MACHINE_TYPE(EM_ARC_COMPACT,      93,
+	`ARC International ARCompact processor')
+DEFINE_ELF_MACHINE_TYPE(EM_XTENSA,           94,
+	`Tensilica Xtensa Architecture')
+DEFINE_ELF_MACHINE_TYPE(EM_VIDEOCORE,        95,
+	`Alphamosaic VideoCore processor')
+DEFINE_ELF_MACHINE_TYPE(EM_TMM_GPP,          96,
+	`Thompson Multimedia General Purpose Processor')
+DEFINE_ELF_MACHINE_TYPE(EM_NS32K,            97,
+	`National Semiconductor 32000 series')
+DEFINE_ELF_MACHINE_TYPE(EM_TPC,              98,
+	`Tenor Network TPC processor')
+DEFINE_ELF_MACHINE_TYPE(EM_SNP1K,            99,
+	`Trebia SNP 1000 processor')
+DEFINE_ELF_MACHINE_TYPE(EM_ST200,            100,
+	`STMicroelectronics (www.st.com) ST200 microcontroller')
+DEFINE_ELF_MACHINE_TYPE(EM_IP2K,             101,
+	`Ubicom IP2xxx microcontroller family')
+DEFINE_ELF_MACHINE_TYPE(EM_MAX,              102,
+	`MAX Processor')
+DEFINE_ELF_MACHINE_TYPE(EM_CR,               103,
+	`National Semiconductor CompactRISC microprocessor')
+DEFINE_ELF_MACHINE_TYPE(EM_F2MC16,           104,
+	`Fujitsu F2MC16')
+DEFINE_ELF_MACHINE_TYPE(EM_MSP430,           105,
+	`Texas Instruments embedded microcontroller msp430')
+DEFINE_ELF_MACHINE_TYPE(EM_BLACKFIN,         106,
+	`Analog Devices Blackfin (DSP) processor')
+DEFINE_ELF_MACHINE_TYPE(EM_SE_C33,           107,
+	`S1C33 Family of Seiko Epson processors')
+DEFINE_ELF_MACHINE_TYPE(EM_SEP,              108,
+	`Sharp embedded microprocessor')
+DEFINE_ELF_MACHINE_TYPE(EM_ARCA,             109,
+	`Arca RISC Microprocessor')
+DEFINE_ELF_MACHINE_TYPE(EM_UNICORE,          110,
+	`Microprocessor series from PKU-Unity Ltd. and MPRC of Peking University')
+DEFINE_ELF_MACHINE_TYPE(EM_EXCESS,           111,
+	`eXcess: 16/32/64-bit configurable embedded CPU')
+DEFINE_ELF_MACHINE_TYPE(EM_DXP,              112,
+	`Icera Semiconductor Inc. Deep Execution Processor')
+DEFINE_ELF_MACHINE_TYPE(EM_ALTERA_NIOS2,     113,
+	`Altera Nios II soft-core processor')
+DEFINE_ELF_MACHINE_TYPE(EM_CRX,              114,
+	`National Semiconductor CompactRISC CRX microprocessor')
+DEFINE_ELF_MACHINE_TYPE(EM_XGATE,            115,
+	`Motorola XGATE embedded processor')
+DEFINE_ELF_MACHINE_TYPE(EM_C166,             116,
+	`Infineon C16x/XC16x processor')
+DEFINE_ELF_MACHINE_TYPE(EM_M16C,             117,
+	`Renesas M16C series microprocessors')
+DEFINE_ELF_MACHINE_TYPE(EM_DSPIC30F,         118,
+	`Microchip Technology dsPIC30F Digital Signal Controller')
+DEFINE_ELF_MACHINE_TYPE(EM_CE,               119,
+	`Freescale Communication Engine RISC core')
+DEFINE_ELF_MACHINE_TYPE(EM_M32C,             120,
+	`Renesas M32C series microprocessors')
+DEFINE_ELF_MACHINE_TYPE(EM_TSK3000,          131,
+	`Altium TSK3000 core')
+DEFINE_ELF_MACHINE_TYPE(EM_RS08,             132,
+	`Freescale RS08 embedded processor')
+DEFINE_ELF_MACHINE_TYPE(EM_SHARC,            133,
+	`Analog Devices SHARC family of 32-bit DSP processors')
+DEFINE_ELF_MACHINE_TYPE(EM_ECOG2,            134,
+	`Cyan Technology eCOG2 microprocessor')
+DEFINE_ELF_MACHINE_TYPE(EM_SCORE7,           135,
+	`Sunplus S+core7 RISC processor')
+DEFINE_ELF_MACHINE_TYPE(EM_DSP24,            136,
+	`New Japan Radio (NJR) 24-bit DSP Processor')
+DEFINE_ELF_MACHINE_TYPE(EM_VIDEOCORE3,       137,
+	`Broadcom VideoCore III processor')
+DEFINE_ELF_MACHINE_TYPE(EM_LATTICEMICO32,    138,
+	`RISC processor for Lattice FPGA architecture')
+DEFINE_ELF_MACHINE_TYPE(EM_SE_C17,           139,
+	`Seiko Epson C17 family')
+DEFINE_ELF_MACHINE_TYPE(EM_TI_C6000,         140,
+	`The Texas Instruments TMS320C6000 DSP family')
+DEFINE_ELF_MACHINE_TYPE(EM_TI_C2000,         141,
+	`The Texas Instruments TMS320C2000 DSP family')
+DEFINE_ELF_MACHINE_TYPE(EM_TI_C5500,         142,
+	`The Texas Instruments TMS320C55x DSP family')
+DEFINE_ELF_MACHINE_TYPE(EM_MMDSP_PLUS,       160,
+	`STMicroelectronics 64bit VLIW Data Signal Processor')
+DEFINE_ELF_MACHINE_TYPE(EM_CYPRESS_M8C,      161,
+	`Cypress M8C microprocessor')
+DEFINE_ELF_MACHINE_TYPE(EM_R32C,             162,
+	`Renesas R32C series microprocessors')
+DEFINE_ELF_MACHINE_TYPE(EM_TRIMEDIA,         163,
+	`NXP Semiconductors TriMedia architecture family')
+DEFINE_ELF_MACHINE_TYPE(EM_QDSP6,            164,
+	`QUALCOMM DSP6 Processor')
+DEFINE_ELF_MACHINE_TYPE(EM_8051,             165,
+	`Intel 8051 and variants')
+DEFINE_ELF_MACHINE_TYPE(EM_STXP7X,           166,
+	`STMicroelectronics STxP7x family of configurable and extensible RISC processors')
+DEFINE_ELF_MACHINE_TYPE(EM_NDS32,            167,
+	`Andes Technology compact code size embedded RISC processor family')
+DEFINE_ELF_MACHINE_TYPE(EM_ECOG1,            168,
+	`Cyan Technology eCOG1X family')
+DEFINE_ELF_MACHINE_TYPE(EM_ECOG1X,           168,
+	`Cyan Technology eCOG1X family')
+DEFINE_ELF_MACHINE_TYPE(EM_MAXQ30,           169,
+	`Dallas Semiconductor MAXQ30 Core Micro-controllers')
+DEFINE_ELF_MACHINE_TYPE(EM_XIMO16,           170,
+	`New Japan Radio (NJR) 16-bit DSP Processor')
+DEFINE_ELF_MACHINE_TYPE(EM_MANIK,            171,
+	`M2000 Reconfigurable RISC Microprocessor')
+DEFINE_ELF_MACHINE_TYPE(EM_CRAYNV2,          172,
+	`Cray Inc. NV2 vector architecture')
+DEFINE_ELF_MACHINE_TYPE(EM_RX,               173,
+	`Renesas RX family')
+DEFINE_ELF_MACHINE_TYPE(EM_METAG,            174,
+	`Imagination Technologies META processor architecture')
+DEFINE_ELF_MACHINE_TYPE(EM_MCST_ELBRUS,      175,
+	`MCST Elbrus general purpose hardware architecture')
+DEFINE_ELF_MACHINE_TYPE(EM_ECOG16,           176,
+	`Cyan Technology eCOG16 family')
+DEFINE_ELF_MACHINE_TYPE(EM_CR16,             177,
+	`National Semiconductor CompactRISC CR16 16-bit microprocessor')
+DEFINE_ELF_MACHINE_TYPE(EM_ETPU,             178,
+	`Freescale Extended Time Processing Unit')
+DEFINE_ELF_MACHINE_TYPE(EM_SLE9X,            179,
+	`Infineon Technologies SLE9X core')
+DEFINE_ELF_MACHINE_TYPE(EM_AARCH64,          183,
+	`AArch64 (64-bit ARM)')
+DEFINE_ELF_MACHINE_TYPE(EM_AVR32,            185,
+	`Atmel Corporation 32-bit microprocessor family')
+DEFINE_ELF_MACHINE_TYPE(EM_STM8,             186,
+	`STMicroeletronics STM8 8-bit microcontroller')
+DEFINE_ELF_MACHINE_TYPE(EM_TILE64,           187,
+	`Tilera TILE64 multicore architecture family')
+DEFINE_ELF_MACHINE_TYPE(EM_TILEPRO,          188,
+	`Tilera TILEPro multicore architecture family')
+DEFINE_ELF_MACHINE_TYPE(EM_MICROBLAZE,       189,
+	`Xilinx MicroBlaze 32-bit RISC soft processor core')
+DEFINE_ELF_MACHINE_TYPE(EM_CUDA,             190,
+	`NVIDIA CUDA architecture')
+DEFINE_ELF_MACHINE_TYPE(EM_TILEGX,           191,
+	`Tilera TILE-Gx multicore architecture family')
+DEFINE_ELF_MACHINE_TYPE(EM_CLOUDSHIELD,      192,
+	`CloudShield architecture family')
+DEFINE_ELF_MACHINE_TYPE(EM_COREA_1ST,        193,
+	`KIPO-KAIST Core-A 1st generation processor family')
+DEFINE_ELF_MACHINE_TYPE(EM_COREA_2ND,        194,
+	`KIPO-KAIST Core-A 2nd generation processor family')
+DEFINE_ELF_MACHINE_TYPE(EM_ARC_COMPACT2,     195,
+	`Synopsys ARCompact V2')
+DEFINE_ELF_MACHINE_TYPE(EM_OPEN8,            196,
+	`Open8 8-bit RISC soft processor core')
+DEFINE_ELF_MACHINE_TYPE(EM_RL78,             197,
+	`Renesas RL78 family')
+DEFINE_ELF_MACHINE_TYPE(EM_VIDEOCORE5,       198,
+	`Broadcom VideoCore V processor')
+DEFINE_ELF_MACHINE_TYPE(EM_78KOR,            199,
+	`Renesas 78KOR family')
+DEFINE_ELF_MACHINE_TYPE(EM_56800EX,          200,
+	`Freescale 56800EX Digital Signal Controller')
+DEFINE_ELF_MACHINE_TYPE(EM_BA1,              201,
+	`Beyond BA1 CPU architecture')
+DEFINE_ELF_MACHINE_TYPE(EM_BA2,              202,
+	`Beyond BA2 CPU architecture')
+DEFINE_ELF_MACHINE_TYPE(EM_XCORE,            203,
+	`XMOS xCORE processor family')
+DEFINE_ELF_MACHINE_TYPE(EM_MCHP_PIC,         204,
+	`Microchip 8-bit PIC(r) family')
+DEFINE_ELF_MACHINE_TYPE(EM_INTELGT,          205,
+	`Intel Graphics Technology')
+DEFINE_ELF_MACHINE_TYPE(EM_INTEL206,         206,
+	`Reserved by Intel')
+DEFINE_ELF_MACHINE_TYPE(EM_INTEL207,         207,
+	`Reserved by Intel')
+DEFINE_ELF_MACHINE_TYPE(EM_INTEL208,         208,
+	`Reserved by Intel')
+DEFINE_ELF_MACHINE_TYPE(EM_INTEL209,         209,
+	`Reserved by Intel')
+DEFINE_ELF_MACHINE_TYPE(EM_KM32,             210,
+	`KM211 KM32 32-bit processor')
+DEFINE_ELF_MACHINE_TYPE(EM_KMX32,            211,
+	`KM211 KMX32 32-bit processor')
+DEFINE_ELF_MACHINE_TYPE(EM_KMX16,            212,
+	`KM211 KMX16 16-bit processor')
+DEFINE_ELF_MACHINE_TYPE(EM_KMX8,             213,
+	`KM211 KMX8 8-bit processor')
+DEFINE_ELF_MACHINE_TYPE(EM_KVARC,            214,
+	`KM211 KMX32 KVARC processor')
+DEFINE_ELF_MACHINE_TYPE(EM_CDP,              215,
+	`Paneve CDP architecture family')
+DEFINE_ELF_MACHINE_TYPE(EM_COGE,             216,
+	`Cognitive Smart Memory Processor')
+DEFINE_ELF_MACHINE_TYPE(EM_COOL,             217,
+	`Bluechip Systems CoolEngine')
+DEFINE_ELF_MACHINE_TYPE(EM_NORC,             218,
+	`Nanoradio Optimized RISC')
+DEFINE_ELF_MACHINE_TYPE(EM_CSR_KALIMBA,      219,
+	`CSR Kalimba architecture family')
+DEFINE_ELF_MACHINE_TYPE(EM_Z80,              220,
+	`Zilog Z80')
+DEFINE_ELF_MACHINE_TYPE(EM_VISIUM,           221,
+	`Controls and Data Services VISIUMcore processor')
+DEFINE_ELF_MACHINE_TYPE(EM_FT32,             222,
+	`FTDI Chip FT32 high performance 32-bit RISC architecture')
+DEFINE_ELF_MACHINE_TYPE(EM_MOXIE,            223,
+	`Moxie processor family')
+DEFINE_ELF_MACHINE_TYPE(EM_AMDGPU,           224,
+	`AMD GPU architecture')
+DEFINE_ELF_MACHINE_TYPE(EM_RISCV,            243,
+	`RISC-V')
+DEFINE_ELF_MACHINE_TYPE(EM_LANAI,            244,
+	`Lanai processor')
+DEFINE_ELF_MACHINE_TYPE(EM_CEVA,             245,
+	`CEVA Processor Architecture Family')
+DEFINE_ELF_MACHINE_TYPE(EM_CEVA_X2,          246,
+	`CEVA X2 Processor Family')
+DEFINE_ELF_MACHINE_TYPE(EM_BPF,              247,
+	`Linux BPF – in-kernel virtual machine')
+DEFINE_ELF_MACHINE_TYPE(EM_GRAPHCORE_IPU,    248,
+	`Graphcore Intelligent Processing Unit')
+DEFINE_ELF_MACHINE_TYPE(EM_IMG1,             249,
+	`Imagination Technologies')
+DEFINE_ELF_MACHINE_TYPE(EM_NFP,              250,
+	`Netronome Flow Processor (NFP)')
+DEFINE_ELF_MACHINE_TYPE(EM_CSKY,             252,
+	`C-SKY processor family')
+DEFINE_ELF_MACHINE_TYPE(EM_65816,            257,
+	`WDC 65816/65C816')
+DEFINE_ELF_MACHINE_TYPE(EM_KF32,             259,
+	`ChipON KungFu 32')
+')
+
+define(`DEFINE_ELF_MACHINE_TYPE_SYNONYMS',`
+DEFINE_ELF_MACHINE_TYPE_SYNONYM(EM_AMD64, EM_X86_64)
+DEFINE_ELF_MACHINE_TYPE_SYNONYM(EM_ARC_A5, EM_ARC_COMPACT)
+')
+
+#
+# ELF file types: (ET_*).
+#
+define(`DEFINE_ELF_TYPES',`
+DEFINE_ELF_TYPE(ET_NONE,   0,
+	`No file type')
+DEFINE_ELF_TYPE(ET_REL,    1,
+	`Relocatable object')
+DEFINE_ELF_TYPE(ET_EXEC,   2,
+	`Executable')
+DEFINE_ELF_TYPE(ET_DYN,    3,
+	`Shared object')
+DEFINE_ELF_TYPE(ET_CORE,   4,
+	`Core file')
+DEFINE_ELF_TYPE(ET_LOOS,   0xFE00U,
+	`Begin OS-specific range')
+DEFINE_ELF_TYPE(ET_HIOS,   0xFEFFU,
+	`End OS-specific range')
+DEFINE_ELF_TYPE(ET_LOPROC, 0xFF00U,
+	`Begin processor-specific range')
+DEFINE_ELF_TYPE(ET_HIPROC, 0xFFFFU,
+	`End processor-specific range')
+')
+
+# ELF file format version numbers.
+define(`DEFINE_ELF_FILE_VERSIONS',`
+DEFINE_ELF_FILE_VERSION(EV_NONE, 0)
+DEFINE_ELF_FILE_VERSION(EV_CURRENT, 1)
+')
+
+#
+# Flags for section groups.
+#
+define(`DEFINE_GRP_FLAGS',`
+DEFINE_GRP_FLAG(GRP_COMDAT, 	0x1,
+	`COMDAT semantics')
+DEFINE_GRP_FLAG(GRP_MASKOS,	0x0ff00000,
+	`OS-specific flags')
+DEFINE_GRP_FLAG(GRP_MASKPROC, 	0xf0000000,
+	`processor-specific flags')
+')
+
+#
+# Flags / mask for .gnu.versym sections.
+#
+define(`DEFINE_VERSYMS',`
+DEFINE_VERSYM(VERSYM_VERSION,	0x7fff)
+DEFINE_VERSYM(VERSYM_HIDDEN,	0x8000)
+')
+
+#
+# Flags used by program header table entries.
+#
+define(`DEFINE_PHDR_FLAGS',`
+DEFINE_PHDR_FLAG(PF_X,                0x1,
+	`Execute')
+DEFINE_PHDR_FLAG(PF_W,                0x2,
+	`Write')
+DEFINE_PHDR_FLAG(PF_R,                0x4,
+	`Read')
+DEFINE_PHDR_FLAG(PF_MASKOS,           0x0ff00000,
+	`OS-specific flags')
+DEFINE_PHDR_FLAG(PF_MASKPROC,         0xf0000000,
+	`Processor-specific flags')
+DEFINE_PHDR_FLAG(PF_ARM_SB,           0x10000000,
+	`segment contains the location addressed by the static base')
+DEFINE_PHDR_FLAG(PF_ARM_PI,           0x20000000,
+	`segment is position-independent')
+DEFINE_PHDR_FLAG(PF_ARM_ABS,          0x40000000,
+	`segment must be loaded at its base address')
+')
+
+#
+# Types of program header table entries.
+#
+define(`DEFINE_PHDR_TYPES',`
+DEFINE_PHDR_TYPE(PT_NULL,             0UL,
+	`ignored entry')
+DEFINE_PHDR_TYPE(PT_LOAD,             1UL,
+	`loadable segment')
+DEFINE_PHDR_TYPE(PT_DYNAMIC,          2UL,
+	`contains dynamic linking information')
+DEFINE_PHDR_TYPE(PT_INTERP,           3UL,
+	`names an interpreter')
+DEFINE_PHDR_TYPE(PT_NOTE,             4UL,
+	`auxiliary information')
+DEFINE_PHDR_TYPE(PT_SHLIB,            5UL,
+	`reserved')
+DEFINE_PHDR_TYPE(PT_PHDR,             6UL,
+	`describes the program header itself')
+DEFINE_PHDR_TYPE(PT_TLS,              7UL,
+	`thread local storage')
+DEFINE_PHDR_TYPE(PT_LOOS,             0x60000000UL,
+	`start of OS-specific range')
+DEFINE_PHDR_TYPE(PT_SUNW_UNWIND,      0x6464E550UL,
+	`Solaris/amd64 stack unwind tables')
+DEFINE_PHDR_TYPE(PT_GNU_EH_FRAME,     0x6474E550UL,
+	`GCC generated .eh_frame_hdr segment')
+DEFINE_PHDR_TYPE(PT_GNU_STACK,	    0x6474E551UL,
+	`Stack flags')
+DEFINE_PHDR_TYPE(PT_GNU_RELRO,	    0x6474E552UL,
+	`Segment becomes read-only after relocation')
+DEFINE_PHDR_TYPE(PT_OPENBSD_RANDOMIZE,0x65A3DBE6UL,
+	`Segment filled with random data')
+DEFINE_PHDR_TYPE(PT_OPENBSD_WXNEEDED, 0x65A3DBE7UL,
+	`Program violates W^X')
+DEFINE_PHDR_TYPE(PT_OPENBSD_BOOTDATA, 0x65A41BE6UL,
+	`Boot data')
+DEFINE_PHDR_TYPE(PT_SUNWBSS,          0x6FFFFFFAUL,
+	`A Solaris .SUNW_bss section')
+DEFINE_PHDR_TYPE(PT_SUNWSTACK,        0x6FFFFFFBUL,
+	`A Solaris process stack')
+DEFINE_PHDR_TYPE(PT_SUNWDTRACE,       0x6FFFFFFCUL,
+	`Used by dtrace(1)')
+DEFINE_PHDR_TYPE(PT_SUNWCAP,          0x6FFFFFFDUL,
+	`Special hardware capability requirements')
+DEFINE_PHDR_TYPE(PT_HIOS,             0x6FFFFFFFUL,
+	`end of OS-specific range')
+DEFINE_PHDR_TYPE(PT_LOPROC,           0x70000000UL,
+	`start of processor-specific range')
+DEFINE_PHDR_TYPE(PT_ARM_ARCHEXT,      0x70000000UL,
+	`platform architecture compatibility information')
+DEFINE_PHDR_TYPE(PT_ARM_EXIDX,        0x70000001UL,
+	`exception unwind tables')
+DEFINE_PHDR_TYPE(PT_MIPS_REGINFO,     0x70000000UL,
+	`register usage information')
+DEFINE_PHDR_TYPE(PT_MIPS_RTPROC,      0x70000001UL,
+	`runtime procedure table')
+DEFINE_PHDR_TYPE(PT_MIPS_OPTIONS,     0x70000002UL,
+	`options segment')
+DEFINE_PHDR_TYPE(PT_HIPROC,           0x7FFFFFFFUL,
+	`end of processor-specific range')
+')
+
+define(`DEFINE_PHDR_TYPE_SYNONYMS',`
+DEFINE_PHDR_TYPE_SYNONYM(PT_ARM_UNWIND,	PT_ARM_EXIDX)
+DEFINE_PHDR_TYPE_SYNONYM(PT_HISUNW,	PT_HIOS)
+DEFINE_PHDR_TYPE_SYNONYM(PT_LOSUNW,	PT_SUNWBSS)
+')
+
+#
+# Section flags.
+#
+define(`DEFINE_SECTION_FLAGS',`
+DEFINE_SECTION_FLAG(SHF_WRITE,           0x1,
+	`writable during program execution')
+DEFINE_SECTION_FLAG(SHF_ALLOC,           0x2,
+	`occupies memory during program execution')
+DEFINE_SECTION_FLAG(SHF_EXECINSTR,       0x4,
+	`executable instructions')
+DEFINE_SECTION_FLAG(SHF_MERGE,           0x10,
+	`may be merged to prevent duplication')
+DEFINE_SECTION_FLAG(SHF_STRINGS,         0x20,
+	`NUL-terminated character strings')
+DEFINE_SECTION_FLAG(SHF_INFO_LINK,       0x40,
+	`the sh_info field holds a link')
+DEFINE_SECTION_FLAG(SHF_LINK_ORDER,      0x80,
+	`special ordering requirements during linking')
+DEFINE_SECTION_FLAG(SHF_OS_NONCONFORMING, 0x100,
+	`requires OS-specific processing during linking')
+DEFINE_SECTION_FLAG(SHF_GROUP,           0x200,
+	`member of a section group')
+DEFINE_SECTION_FLAG(SHF_TLS,             0x400,
+	`holds thread-local storage')
+DEFINE_SECTION_FLAG(SHF_COMPRESSED,      0x800,
+	`holds compressed data')
+DEFINE_SECTION_FLAG(SHF_MASKOS,          0x0FF00000UL,
+	`bits reserved for OS-specific semantics')
+DEFINE_SECTION_FLAG(SHF_AMD64_LARGE,     0x10000000UL,
+	`section uses large code model')
+DEFINE_SECTION_FLAG(SHF_ENTRYSECT,       0x10000000UL,
+	`section contains an entry point (ARM)')
+DEFINE_SECTION_FLAG(SHF_COMDEF,          0x80000000UL,
+	`section may be multiply defined in input to link step (ARM)')
+DEFINE_SECTION_FLAG(SHF_MIPS_GPREL,      0x10000000UL,
+	`section must be part of global data area')
+DEFINE_SECTION_FLAG(SHF_MIPS_MERGE,      0x20000000UL,
+	`section data should be merged to eliminate duplication')
+DEFINE_SECTION_FLAG(SHF_MIPS_ADDR,       0x40000000UL,
+	`section data is addressed by default')
+DEFINE_SECTION_FLAG(SHF_MIPS_STRING,     0x80000000UL,
+	`section data is string data by default')
+DEFINE_SECTION_FLAG(SHF_MIPS_NOSTRIP,    0x08000000UL,
+	`section data may not be stripped')
+DEFINE_SECTION_FLAG(SHF_MIPS_LOCAL,      0x04000000UL,
+	`section data local to process')
+DEFINE_SECTION_FLAG(SHF_MIPS_NAMES,      0x02000000UL,
+	`linker must generate implicit hidden weak names')
+DEFINE_SECTION_FLAG(SHF_MIPS_NODUPE,     0x01000000UL,
+	`linker must retain only one copy')
+DEFINE_SECTION_FLAG(SHF_ORDERED,         0x40000000UL,
+	`section is ordered with respect to other sections')
+DEFINE_SECTION_FLAG(SHF_EXCLUDE,	     0x80000000UL,
+	`section is excluded from executables and shared objects')
+DEFINE_SECTION_FLAG(SHF_MASKPROC,        0xF0000000UL,
+	`bits reserved for processor-specific semantics')
+')
+
+#
+# Special section indices.
+#
+define(`DEFINE_SECTION_INDICES',`
+DEFINE_SECTION_INDEX(SHN_UNDEF, 	0,
+	 `undefined section')
+DEFINE_SECTION_INDEX(SHN_LORESERVE, 	0xFF00U,
+	`start of reserved area')
+DEFINE_SECTION_INDEX(SHN_LOPROC, 	0xFF00U,
+	`start of processor-specific range')
+DEFINE_SECTION_INDEX(SHN_BEFORE,	0xFF00U,
+	`used for section ordering')
+DEFINE_SECTION_INDEX(SHN_AFTER,	0xFF01U,
+	`used for section ordering')
+DEFINE_SECTION_INDEX(SHN_AMD64_LCOMMON, 0xFF02U,
+	`large common block label')
+DEFINE_SECTION_INDEX(SHN_MIPS_ACOMMON, 0xFF00U,
+	`allocated common symbols in a DSO')
+DEFINE_SECTION_INDEX(SHN_MIPS_TEXT,	0xFF01U,
+	`Reserved (obsolete)')
+DEFINE_SECTION_INDEX(SHN_MIPS_DATA,	0xFF02U,
+	`Reserved (obsolete)')
+DEFINE_SECTION_INDEX(SHN_MIPS_SCOMMON, 0xFF03U,
+	`gp-addressable common symbols')
+DEFINE_SECTION_INDEX(SHN_MIPS_SUNDEFINED, 0xFF04U,
+	`gp-addressable undefined symbols')
+DEFINE_SECTION_INDEX(SHN_MIPS_LCOMMON, 0xFF05U,
+	`local common symbols')
+DEFINE_SECTION_INDEX(SHN_MIPS_LUNDEFINED, 0xFF06U,
+	`local undefined symbols')
+DEFINE_SECTION_INDEX(SHN_HIPROC, 	0xFF1FU,
+	`end of processor-specific range')
+DEFINE_SECTION_INDEX(SHN_LOOS, 	0xFF20U,
+	`start of OS-specific range')
+DEFINE_SECTION_INDEX(SHN_SUNW_IGNORE, 0xFF3FU,
+	`used by dtrace')
+DEFINE_SECTION_INDEX(SHN_HIOS, 	0xFF3FU,
+	`end of OS-specific range')
+DEFINE_SECTION_INDEX(SHN_ABS, 	0xFFF1U,
+	`absolute references')
+DEFINE_SECTION_INDEX(SHN_COMMON, 	0xFFF2U,
+	`references to COMMON areas')
+DEFINE_SECTION_INDEX(SHN_XINDEX, 	0xFFFFU,
+	`extended index')
+DEFINE_SECTION_INDEX(SHN_HIRESERVE, 	0xFFFFU,
+	`end of reserved area')
+')
+
+#
+# Section types.
+#
+define(`DEFINE_SECTION_TYPES',`
+DEFINE_SECTION_TYPE(SHT_NULL,            0, `inactive header')
+DEFINE_SECTION_TYPE(SHT_PROGBITS,        1, `program defined information')
+DEFINE_SECTION_TYPE(SHT_SYMTAB,          2, `symbol table')
+DEFINE_SECTION_TYPE(SHT_STRTAB,          3, `string table')
+DEFINE_SECTION_TYPE(SHT_RELA,            4,
+	`relocation entries with addends')
+DEFINE_SECTION_TYPE(SHT_HASH,            5, `symbol hash table')
+DEFINE_SECTION_TYPE(SHT_DYNAMIC,         6,
+	`information for dynamic linking')
+DEFINE_SECTION_TYPE(SHT_NOTE,            7, `additional notes')
+DEFINE_SECTION_TYPE(SHT_NOBITS,          8, `section occupying no space')
+DEFINE_SECTION_TYPE(SHT_REL,             9,
+	`relocation entries without addends')
+DEFINE_SECTION_TYPE(SHT_SHLIB,           10, `reserved')
+DEFINE_SECTION_TYPE(SHT_DYNSYM,          11, `symbol table')
+DEFINE_SECTION_TYPE(SHT_INIT_ARRAY,      14,
+	`pointers to initialization functions')
+DEFINE_SECTION_TYPE(SHT_FINI_ARRAY,      15,
+	`pointers to termination functions')
+DEFINE_SECTION_TYPE(SHT_PREINIT_ARRAY,   16,
+	`pointers to functions called before initialization')
+DEFINE_SECTION_TYPE(SHT_GROUP,           17, `defines a section group')
+DEFINE_SECTION_TYPE(SHT_SYMTAB_SHNDX,    18,
+	`used for extended section numbering')
+DEFINE_SECTION_TYPE(SHT_LOOS,            0x60000000UL,
+	`start of OS-specific range')
+DEFINE_SECTION_TYPE(SHT_SUNW_dof,	     0x6FFFFFF4UL,
+	`used by dtrace')
+DEFINE_SECTION_TYPE(SHT_SUNW_cap,	     0x6FFFFFF5UL,
+	`capability requirements')
+DEFINE_SECTION_TYPE(SHT_GNU_ATTRIBUTES,  0x6FFFFFF5UL,
+	`object attributes')
+DEFINE_SECTION_TYPE(SHT_SUNW_SIGNATURE,  0x6FFFFFF6UL,
+	`module verification signature')
+DEFINE_SECTION_TYPE(SHT_GNU_HASH,	     0x6FFFFFF6UL,
+	`GNU Hash sections')
+DEFINE_SECTION_TYPE(SHT_GNU_LIBLIST,     0x6FFFFFF7UL,
+	`List of libraries to be prelinked')
+DEFINE_SECTION_TYPE(SHT_SUNW_ANNOTATE,   0x6FFFFFF7UL,
+	`special section where unresolved references are allowed')
+DEFINE_SECTION_TYPE(SHT_SUNW_DEBUGSTR,   0x6FFFFFF8UL,
+	`debugging information')
+DEFINE_SECTION_TYPE(SHT_CHECKSUM, 	     0x6FFFFFF8UL,
+	`checksum for dynamic shared objects')
+DEFINE_SECTION_TYPE(SHT_SUNW_DEBUG,      0x6FFFFFF9UL,
+	`debugging information')
+DEFINE_SECTION_TYPE(SHT_SUNW_move,       0x6FFFFFFAUL,
+	`information to handle partially initialized symbols')
+DEFINE_SECTION_TYPE(SHT_SUNW_COMDAT,     0x6FFFFFFBUL,
+	`section supporting merging of multiple copies of data')
+DEFINE_SECTION_TYPE(SHT_SUNW_syminfo,    0x6FFFFFFCUL,
+	`additional symbol information')
+DEFINE_SECTION_TYPE(SHT_SUNW_verdef,     0x6FFFFFFDUL,
+	`symbol versioning information')
+DEFINE_SECTION_TYPE(SHT_SUNW_verneed,    0x6FFFFFFEUL,
+	`symbol versioning requirements')
+DEFINE_SECTION_TYPE(SHT_SUNW_versym,     0x6FFFFFFFUL,
+	`symbol versioning table')
+DEFINE_SECTION_TYPE(SHT_HIOS,            0x6FFFFFFFUL,
+	`end of OS-specific range')
+DEFINE_SECTION_TYPE(SHT_LOPROC,          0x70000000UL,
+	`start of processor-specific range')
+DEFINE_SECTION_TYPE(SHT_ARM_EXIDX,       0x70000001UL,
+	`exception index table')
+DEFINE_SECTION_TYPE(SHT_ARM_PREEMPTMAP,  0x70000002UL,
+	`BPABI DLL dynamic linking preemption map')
+DEFINE_SECTION_TYPE(SHT_ARM_ATTRIBUTES,  0x70000003UL,
+	`object file compatibility attributes')
+DEFINE_SECTION_TYPE(SHT_ARM_DEBUGOVERLAY, 0x70000004UL,
+	`overlay debug information')
+DEFINE_SECTION_TYPE(SHT_ARM_OVERLAYSECTION, 0x70000005UL,
+	`overlay debug information')
+DEFINE_SECTION_TYPE(SHT_MIPS_LIBLIST,    0x70000000UL,
+	`DSO library information used in link')
+DEFINE_SECTION_TYPE(SHT_MIPS_MSYM,       0x70000001UL,
+	`MIPS symbol table extension')
+DEFINE_SECTION_TYPE(SHT_MIPS_CONFLICT,   0x70000002UL,
+	`symbol conflicting with DSO-defined symbols ')
+DEFINE_SECTION_TYPE(SHT_MIPS_GPTAB,      0x70000003UL,
+	`global pointer table')
+DEFINE_SECTION_TYPE(SHT_MIPS_UCODE,      0x70000004UL,
+	`reserved')
+DEFINE_SECTION_TYPE(SHT_MIPS_DEBUG,      0x70000005UL,
+	`reserved (obsolete debug information)')
+DEFINE_SECTION_TYPE(SHT_MIPS_REGINFO,    0x70000006UL,
+	`register usage information')
+DEFINE_SECTION_TYPE(SHT_MIPS_PACKAGE,    0x70000007UL,
+	`OSF reserved')
+DEFINE_SECTION_TYPE(SHT_MIPS_PACKSYM,    0x70000008UL,
+	`OSF reserved')
+DEFINE_SECTION_TYPE(SHT_MIPS_RELD,       0x70000009UL,
+	`dynamic relocation')
+DEFINE_SECTION_TYPE(SHT_MIPS_IFACE,      0x7000000BUL,
+	`subprogram interface information')
+DEFINE_SECTION_TYPE(SHT_MIPS_CONTENT,    0x7000000CUL,
+	`section content classification')
+DEFINE_SECTION_TYPE(SHT_MIPS_OPTIONS,     0x7000000DUL,
+	`general options')
+DEFINE_SECTION_TYPE(SHT_MIPS_DELTASYM,   0x7000001BUL,
+	`Delta C++: symbol table')
+DEFINE_SECTION_TYPE(SHT_MIPS_DELTAINST,  0x7000001CUL,
+	`Delta C++: instance table')
+DEFINE_SECTION_TYPE(SHT_MIPS_DELTACLASS, 0x7000001DUL,
+	`Delta C++: class table')
+DEFINE_SECTION_TYPE(SHT_MIPS_DWARF,      0x7000001EUL,
+	`DWARF debug information')
+DEFINE_SECTION_TYPE(SHT_MIPS_DELTADECL,  0x7000001FUL,
+	`Delta C++: declarations')
+DEFINE_SECTION_TYPE(SHT_MIPS_SYMBOL_LIB, 0x70000020UL,
+	`symbol-to-library mapping')
+DEFINE_SECTION_TYPE(SHT_MIPS_EVENTS,     0x70000021UL,
+	`event locations')
+DEFINE_SECTION_TYPE(SHT_MIPS_TRANSLATE,  0x70000022UL,
+	`???')
+DEFINE_SECTION_TYPE(SHT_MIPS_PIXIE,      0x70000023UL,
+	`special pixie sections')
+DEFINE_SECTION_TYPE(SHT_MIPS_XLATE,      0x70000024UL,
+	`address translation table')
+DEFINE_SECTION_TYPE(SHT_MIPS_XLATE_DEBUG, 0x70000025UL,
+	`SGI internal address translation table')
+DEFINE_SECTION_TYPE(SHT_MIPS_WHIRL,      0x70000026UL,
+	`intermediate code')
+DEFINE_SECTION_TYPE(SHT_MIPS_EH_REGION,  0x70000027UL,
+	`C++ exception handling region info')
+DEFINE_SECTION_TYPE(SHT_MIPS_XLATE_OLD,  0x70000028UL,
+	`obsolete')
+DEFINE_SECTION_TYPE(SHT_MIPS_PDR_EXCEPTION, 0x70000029UL,
+	`runtime procedure descriptor table exception information')
+DEFINE_SECTION_TYPE(SHT_MIPS_ABIFLAGS,   0x7000002AUL,
+	`ABI flags')
+DEFINE_SECTION_TYPE(SHT_SPARC_GOTDATA,   0x70000000UL,
+	`SPARC-specific data')
+DEFINE_SECTION_TYPE(SHT_X86_64_UNWIND,   0x70000001UL,
+	`unwind tables for the AMD64')
+DEFINE_SECTION_TYPE(SHT_ORDERED,         0x7FFFFFFFUL,
+	`sort entries in the section')
+DEFINE_SECTION_TYPE(SHT_HIPROC,          0x7FFFFFFFUL,
+	`end of processor-specific range')
+DEFINE_SECTION_TYPE(SHT_LOUSER,          0x80000000UL,
+	`start of application-specific range')
+DEFINE_SECTION_TYPE(SHT_HIUSER,          0xFFFFFFFFUL,
+	`end of application-specific range')
+')
+
+# Aliases for section types.
+define(`DEFINE_SECTION_TYPE_ALIASES',`
+DEFINE_SECTION_TYPE_ALIAS(SHT_AMD64_UNWIND,	SHT_X86_64_UNWIND)
+DEFINE_SECTION_TYPE_ALIAS(SHT_GNU_verdef,	SHT_SUNW_verdef)
+DEFINE_SECTION_TYPE_ALIAS(SHT_GNU_verneed,	SHT_SUNW_verneed)
+DEFINE_SECTION_TYPE_ALIAS(SHT_GNU_versym,	SHT_SUNW_versym)
+')
+
+#
+# Symbol binding information.
+#
+define(`DEFINE_SYMBOL_BINDINGS',`
+DEFINE_SYMBOL_BINDING(STB_LOCAL,           0,
+	`not visible outside defining object file')
+DEFINE_SYMBOL_BINDING(STB_GLOBAL,          1,
+	`visible across all object files being combined')
+DEFINE_SYMBOL_BINDING(STB_WEAK,            2,
+	`visible across all object files but with low precedence')
+DEFINE_SYMBOL_BINDING(STB_LOOS,            10,
+	`start of OS-specific range')
+DEFINE_SYMBOL_BINDING(STB_GNU_UNIQUE,      10,
+	`unique symbol (GNU)')
+DEFINE_SYMBOL_BINDING(STB_HIOS,            12,
+	`end of OS-specific range')
+DEFINE_SYMBOL_BINDING(STB_LOPROC,          13,
+	`start of processor-specific range')
+DEFINE_SYMBOL_BINDING(STB_HIPROC,          15,
+	`end of processor-specific range')
+')
+
+#
+# Symbol types
+#
+define(`DEFINE_SYMBOL_TYPES',`
+DEFINE_SYMBOL_TYPE(STT_NOTYPE,          0,
+	`unspecified type')
+DEFINE_SYMBOL_TYPE(STT_OBJECT,          1,
+	`data object')
+DEFINE_SYMBOL_TYPE(STT_FUNC,            2,
+	`executable code')
+DEFINE_SYMBOL_TYPE(STT_SECTION,         3,
+	`section')
+DEFINE_SYMBOL_TYPE(STT_FILE,            4,
+	`source file')
+DEFINE_SYMBOL_TYPE(STT_COMMON,          5,
+	`uninitialized common block')
+DEFINE_SYMBOL_TYPE(STT_TLS,             6,
+	`thread local storage')
+DEFINE_SYMBOL_TYPE(STT_LOOS,            10,
+	`start of OS-specific types')
+DEFINE_SYMBOL_TYPE(STT_GNU_IFUNC,       10,
+	`indirect function')
+DEFINE_SYMBOL_TYPE(STT_HIOS,            12,
+	`end of OS-specific types')
+DEFINE_SYMBOL_TYPE(STT_LOPROC,          13,
+	`start of processor-specific types')
+DEFINE_SYMBOL_TYPE(STT_ARM_TFUNC,       13,
+	`Thumb function (GNU)')
+DEFINE_SYMBOL_TYPE(STT_ARM_16BIT,       15,
+	`Thumb label (GNU)')
+DEFINE_SYMBOL_TYPE(STT_SPARC_REGISTER,  13,
+	`SPARC register information')
+DEFINE_SYMBOL_TYPE(STT_HIPROC,          15,
+	`end of processor-specific types')
+')
+
+#
+# Symbol binding.
+#
+define(`DEFINE_SYMBOL_BINDING_KINDS',`
+DEFINE_SYMBOL_BINDING_KIND(SYMINFO_BT_SELF,	0xFFFFU,
+	`bound to self')
+DEFINE_SYMBOL_BINDING_KIND(SYMINFO_BT_PARENT,	0xFFFEU,
+	`bound to parent')
+DEFINE_SYMBOL_BINDING_KIND(SYMINFO_BT_NONE,	0xFFFDU,
+	`no special binding')
+')
+
+#
+# Symbol visibility.
+#
+define(`DEFINE_SYMBOL_VISIBILITIES',`
+DEFINE_SYMBOL_VISIBILITY(STV_DEFAULT,         0,
+	`as specified by symbol type')
+DEFINE_SYMBOL_VISIBILITY(STV_INTERNAL,        1,
+	`as defined by processor semantics')
+DEFINE_SYMBOL_VISIBILITY(STV_HIDDEN,          2,
+	`hidden from other components')
+DEFINE_SYMBOL_VISIBILITY(STV_PROTECTED,       3,
+	`local references are not preemptable')
+')
+
+#
+# Symbol flags.
+#
+define(`DEFINE_SYMBOL_FLAGS',`
+DEFINE_SYMBOL_FLAG(SYMINFO_FLG_DIRECT,	0x01,
+	`directly assocated reference')
+DEFINE_SYMBOL_FLAG(SYMINFO_FLG_COPY,	0x04,
+	`definition by copy-relocation')
+DEFINE_SYMBOL_FLAG(SYMINFO_FLG_LAZYLOAD,	0x08,
+	`object should be lazily loaded')
+DEFINE_SYMBOL_FLAG(SYMINFO_FLG_DIRECTBIND,	0x10,
+	`reference should be directly bound')
+DEFINE_SYMBOL_FLAG(SYMINFO_FLG_NOEXTDIRECT, 0x20,
+	`external references not allowed to bind to definition')
+')
+
+#
+# Version dependencies.
+#
+define(`DEFINE_VERSIONING_DEPENDENCIES',`
+DEFINE_VERSIONING_DEPENDENCY(VER_NDX_LOCAL,	0,
+	`local scope')
+DEFINE_VERSIONING_DEPENDENCY(VER_NDX_GLOBAL,	1,
+	`global scope')
+')
+
+#
+# Version flags.
+#
+define(`DEFINE_VERSIONING_FLAGS',`
+DEFINE_VERSIONING_FLAG(VER_FLG_BASE,		0x1,
+	`file version')
+DEFINE_VERSIONING_FLAG(VER_FLG_WEAK,		0x2,
+	`weak version')
+')
+
+#
+# Version needs
+#
+define(`DEFINE_VERSIONING_NEEDS',`
+DEFINE_VERSIONING_NEED(VER_NEED_NONE,		0,
+	`invalid version')
+DEFINE_VERSIONING_NEED(VER_NEED_CURRENT,	1,
+	`current version')
+')
+
+#
+# Versioning numbers.
+#
+define(`DEFINE_VERSIONING_NUMBERS',`
+DEFINE_VERSIONING_NUMBER(VER_DEF_NONE,		0,
+	`invalid version')
+DEFINE_VERSIONING_NUMBER(VER_DEF_CURRENT,	1, 
+	`current version')
+')
+
+#
+# Relocation types.
+#
+define(`DEFINE_386_RELOCATIONS',`
+DEFINE_RELOCATION(R_386_NONE,		0)
+DEFINE_RELOCATION(R_386_32,		1)
+DEFINE_RELOCATION(R_386_PC32,		2)
+DEFINE_RELOCATION(R_386_GOT32,		3)
+DEFINE_RELOCATION(R_386_PLT32,		4)
+DEFINE_RELOCATION(R_386_COPY,		5)
+DEFINE_RELOCATION(R_386_GLOB_DAT,	6)
+DEFINE_RELOCATION(R_386_JUMP_SLOT,	7)
+DEFINE_RELOCATION(R_386_RELATIVE,	8)
+DEFINE_RELOCATION(R_386_GOTOFF,		9)
+DEFINE_RELOCATION(R_386_GOTPC,		10)
+DEFINE_RELOCATION(R_386_32PLT,		11)
+DEFINE_RELOCATION(R_386_TLS_TPOFF,	14)
+DEFINE_RELOCATION(R_386_TLS_IE,		15)
+DEFINE_RELOCATION(R_386_TLS_GOTIE,	16)
+DEFINE_RELOCATION(R_386_TLS_LE,		17)
+DEFINE_RELOCATION(R_386_TLS_GD,		18)
+DEFINE_RELOCATION(R_386_TLS_LDM,	19)
+DEFINE_RELOCATION(R_386_16,		20)
+DEFINE_RELOCATION(R_386_PC16,		21)
+DEFINE_RELOCATION(R_386_8,		22)
+DEFINE_RELOCATION(R_386_PC8,		23)
+DEFINE_RELOCATION(R_386_TLS_GD_32,	24)
+DEFINE_RELOCATION(R_386_TLS_GD_PUSH,	25)
+DEFINE_RELOCATION(R_386_TLS_GD_CALL,	26)
+DEFINE_RELOCATION(R_386_TLS_GD_POP,	27)
+DEFINE_RELOCATION(R_386_TLS_LDM_32,	28)
+DEFINE_RELOCATION(R_386_TLS_LDM_PUSH,	29)
+DEFINE_RELOCATION(R_386_TLS_LDM_CALL,	30)
+DEFINE_RELOCATION(R_386_TLS_LDM_POP,	31)
+DEFINE_RELOCATION(R_386_TLS_LDO_32,	32)
+DEFINE_RELOCATION(R_386_TLS_IE_32,	33)
+DEFINE_RELOCATION(R_386_TLS_LE_32,	34)
+DEFINE_RELOCATION(R_386_TLS_DTPMOD32,	35)
+DEFINE_RELOCATION(R_386_TLS_DTPOFF32,	36)
+DEFINE_RELOCATION(R_386_TLS_TPOFF32,	37)
+DEFINE_RELOCATION(R_386_SIZE32,		38)
+DEFINE_RELOCATION(R_386_TLS_GOTDESC,	39)
+DEFINE_RELOCATION(R_386_TLS_DESC_CALL,	40)
+DEFINE_RELOCATION(R_386_TLS_DESC,	41)
+DEFINE_RELOCATION(R_386_IRELATIVE,	42)
+DEFINE_RELOCATION(R_386_GOT32X,		43)
+')
+
+define(`DEFINE_AARCH64_RELOCATIONS',`
+DEFINE_RELOCATION(R_AARCH64_NONE,				0)
+DEFINE_RELOCATION(R_AARCH64_ABS64,				257)
+DEFINE_RELOCATION(R_AARCH64_ABS32,				258)
+DEFINE_RELOCATION(R_AARCH64_ABS16,				259)
+DEFINE_RELOCATION(R_AARCH64_PREL64,				260)
+DEFINE_RELOCATION(R_AARCH64_PREL32,				261)
+DEFINE_RELOCATION(R_AARCH64_PREL16,				262)
+DEFINE_RELOCATION(R_AARCH64_MOVW_UABS_G0,			263)
+DEFINE_RELOCATION(R_AARCH64_MOVW_UABS_G0_NC,			264)
+DEFINE_RELOCATION(R_AARCH64_MOVW_UABS_G1,			265)
+DEFINE_RELOCATION(R_AARCH64_MOVW_UABS_G1_NC,			266)
+DEFINE_RELOCATION(R_AARCH64_MOVW_UABS_G2,			267)
+DEFINE_RELOCATION(R_AARCH64_MOVW_UABS_G2_NC,			268)
+DEFINE_RELOCATION(R_AARCH64_MOVW_UABS_G3,			269)
+DEFINE_RELOCATION(R_AARCH64_MOVW_SABS_G0,			270)
+DEFINE_RELOCATION(R_AARCH64_MOVW_SABS_G1,			271)
+DEFINE_RELOCATION(R_AARCH64_MOVW_SABS_G2,			272)
+DEFINE_RELOCATION(R_AARCH64_LD_PREL_LO19,			273)
+DEFINE_RELOCATION(R_AARCH64_ADR_PREL_LO21,			274)
+DEFINE_RELOCATION(R_AARCH64_ADR_PREL_PG_HI21,			275)
+DEFINE_RELOCATION(R_AARCH64_ADR_PREL_PG_HI21_NC,		276)
+DEFINE_RELOCATION(R_AARCH64_ADD_ABS_LO12_NC,			277)
+DEFINE_RELOCATION(R_AARCH64_LDST8_ABS_LO12_NC,			278)
+DEFINE_RELOCATION(R_AARCH64_TSTBR14,				279)
+DEFINE_RELOCATION(R_AARCH64_CONDBR19,				280)
+DEFINE_RELOCATION(R_AARCH64_JUMP26,				282)
+DEFINE_RELOCATION(R_AARCH64_CALL26,				283)
+DEFINE_RELOCATION(R_AARCH64_LDST16_ABS_LO12_NC,			284)
+DEFINE_RELOCATION(R_AARCH64_LDST32_ABS_LO12_NC,			285)
+DEFINE_RELOCATION(R_AARCH64_LDST64_ABS_LO12_NC,			286)
+DEFINE_RELOCATION(R_AARCH64_MOVW_PREL_G0,			287)
+DEFINE_RELOCATION(R_AARCH64_MOVW_PREL_G0_NC,			288)
+DEFINE_RELOCATION(R_AARCH64_MOVW_PREL_G1,			289)
+DEFINE_RELOCATION(R_AARCH64_MOVW_PREL_G1_NC,			290)
+DEFINE_RELOCATION(R_AARCH64_MOVW_PREL_G2,			291)
+DEFINE_RELOCATION(R_AARCH64_MOVW_PREL_G2_NC,			292)
+DEFINE_RELOCATION(R_AARCH64_MOVW_PREL_G3,			293)
+DEFINE_RELOCATION(R_AARCH64_LDST128_ABS_LO12_NC,		299)
+DEFINE_RELOCATION(R_AARCH64_MOVW_GOTOFF_G0,			300)
+DEFINE_RELOCATION(R_AARCH64_MOVW_GOTOFF_G0_NC,			301)
+DEFINE_RELOCATION(R_AARCH64_MOVW_GOTOFF_G1,			302)
+DEFINE_RELOCATION(R_AARCH64_MOVW_GOTOFF_G1_NC,			303)
+DEFINE_RELOCATION(R_AARCH64_MOVW_GOTOFF_G2,			304)
+DEFINE_RELOCATION(R_AARCH64_MOVW_GOTOFF_G2_NC,			305)
+DEFINE_RELOCATION(R_AARCH64_MOVW_GOTOFF_G3,			306)
+DEFINE_RELOCATION(R_AARCH64_GOTREL64,				307)
+DEFINE_RELOCATION(R_AARCH64_GOTREL32,				308)
+DEFINE_RELOCATION(R_AARCH64_GOT_LD_PREL19,			309)
+DEFINE_RELOCATION(R_AARCH64_LD64_GOTOFF_LO15,			310)
+DEFINE_RELOCATION(R_AARCH64_ADR_GOT_PAGE,			311)
+DEFINE_RELOCATION(R_AARCH64_LD64_GOT_LO12_NC,			312)
+DEFINE_RELOCATION(R_AARCH64_LD64_GOTPAGE_LO15,			313)
+DEFINE_RELOCATION(R_AARCH64_TLSGD_ADR_PREL21,			512)
+DEFINE_RELOCATION(R_AARCH64_TLSGD_ADR_PAGE21,			513)
+DEFINE_RELOCATION(R_AARCH64_TLSGD_ADD_LO12_NC,			514)
+DEFINE_RELOCATION(R_AARCH64_TLSGD_MOVW_G1,			515)
+DEFINE_RELOCATION(R_AARCH64_TLSGD_MOVW_G0_NC,			516)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_ADR_PREL21,			517)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_ADR_PAGE21,			518)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_ADD_LO12_NC,			519)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_MOVW_G1,			520)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_MOVW_G0_NC,			521)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_LD_PREL19,			522)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_MOVW_DTPREL_G2,		523)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_MOVW_DTPREL_G1,		524)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC,		525)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_MOVW_DTPREL_G0,		526)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC,		527)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_ADD_DTPREL_HI12,		529)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC,		530)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST8_DTPREL_LO12,		531)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC,		532)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST16_DTPREL_LO12,		533)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC,	534)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST32_DTPREL_LO12,		535)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC,	536)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST64_DTPREL_LO12,		537)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC,	538)
+DEFINE_RELOCATION(R_AARCH64_TLSIE_MOVW_GOTTPREL_G1,		539)
+DEFINE_RELOCATION(R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC,		540)
+DEFINE_RELOCATION(R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21,		541)
+DEFINE_RELOCATION(R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC,	542)
+DEFINE_RELOCATION(R_AARCH64_TLSIE_LD_GOTTPREL_PREL19,		543)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_MOVW_TPREL_G2,		544)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_MOVW_TPREL_G1,		545)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_MOVW_TPREL_G1_NC,		546)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_MOVW_TPREL_G0,		547)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_MOVW_TPREL_G0_NC,		548)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_ADD_TPREL_HI12,		549)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_ADD_TPREL_LO12,		550)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_ADD_TPREL_LO12_NC,		551)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST8_TPREL_LO12,		552)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC,		553)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST16_TPREL_LO12,		554)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC,		555)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST32_TPREL_LO12,		556)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC,		557)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST64_TPREL_LO12,		558)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC,		559)
+DEFINE_RELOCATION(R_AARCH64_TLSDESC_LD_PREL19,			560)
+DEFINE_RELOCATION(R_AARCH64_TLSDESC_ADR_PREL21,			561)
+DEFINE_RELOCATION(R_AARCH64_TLSDESC_ADR_PAGE21,			562)
+DEFINE_RELOCATION(R_AARCH64_TLSDESC_LD64_LO12,			563)
+DEFINE_RELOCATION(R_AARCH64_TLSDESC_ADD_LO12,			564)
+DEFINE_RELOCATION(R_AARCH64_TLSDESC_OFF_G1,			565)
+DEFINE_RELOCATION(R_AARCH64_TLSDESC_OFF_G0_NC,			566)
+DEFINE_RELOCATION(R_AARCH64_TLSDESC_LDR,			567)
+DEFINE_RELOCATION(R_AARCH64_TLSDESC_ADD,			568)
+DEFINE_RELOCATION(R_AARCH64_TLSDESC_CALL,			569)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST128_TPREL_LO12,		570)
+DEFINE_RELOCATION(R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC,	571)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST128_DTPREL_LO12,		572)
+DEFINE_RELOCATION(R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC,	573)
+DEFINE_RELOCATION(R_AARCH64_COPY,				1024)
+DEFINE_RELOCATION(R_AARCH64_GLOB_DAT,				1025)
+DEFINE_RELOCATION(R_AARCH64_JUMP_SLOT,				1026)
+DEFINE_RELOCATION(R_AARCH64_RELATIVE,				1027)
+DEFINE_RELOCATION(R_AARCH64_TLS_DTPREL64,			1028)
+DEFINE_RELOCATION(R_AARCH64_TLS_DTPMOD64,			1029)
+DEFINE_RELOCATION(R_AARCH64_TLS_TPREL64,			1030)
+DEFINE_RELOCATION(R_AARCH64_TLSDESC,				1031)
+DEFINE_RELOCATION(R_AARCH64_IRELATIVE,				1032)
+')
+
+#
+# These are the symbols used in the Sun ``Linkers and Loaders
+# Guide'', Document No: 817-1984-17.  See the X86_64 relocations list
+# below for the spellings used in the ELF specification.
+#
+define(`DEFINE_AMD64_RELOCATIONS',`
+DEFINE_RELOCATION(R_AMD64_NONE,		0)
+DEFINE_RELOCATION(R_AMD64_64,		1)
+DEFINE_RELOCATION(R_AMD64_PC32,		2)
+DEFINE_RELOCATION(R_AMD64_GOT32,	3)
+DEFINE_RELOCATION(R_AMD64_PLT32,	4)
+DEFINE_RELOCATION(R_AMD64_COPY,		5)
+DEFINE_RELOCATION(R_AMD64_GLOB_DAT,	6)
+DEFINE_RELOCATION(R_AMD64_JUMP_SLOT,	7)
+DEFINE_RELOCATION(R_AMD64_RELATIVE,	8)
+DEFINE_RELOCATION(R_AMD64_GOTPCREL,	9)
+DEFINE_RELOCATION(R_AMD64_32,		10)
+DEFINE_RELOCATION(R_AMD64_32S,		11)
+DEFINE_RELOCATION(R_AMD64_16,		12)
+DEFINE_RELOCATION(R_AMD64_PC16,		13)
+DEFINE_RELOCATION(R_AMD64_8,		14)
+DEFINE_RELOCATION(R_AMD64_PC8,		15)
+DEFINE_RELOCATION(R_AMD64_PC64,		24)
+DEFINE_RELOCATION(R_AMD64_GOTOFF64,	25)
+DEFINE_RELOCATION(R_AMD64_GOTPC32,	26)
+')
+
+#
+# Relocation definitions from the ARM ELF ABI, version "ARM IHI
+# 0044E" released on 30th November 2012.
+#
+define(`DEFINE_ARM_RELOCATIONS',`
+DEFINE_RELOCATION(R_ARM_NONE,			0)
+DEFINE_RELOCATION(R_ARM_PC24,			1)
+DEFINE_RELOCATION(R_ARM_ABS32,			2)
+DEFINE_RELOCATION(R_ARM_REL32,			3)
+DEFINE_RELOCATION(R_ARM_LDR_PC_G0,		4)
+DEFINE_RELOCATION(R_ARM_ABS16,			5)
+DEFINE_RELOCATION(R_ARM_ABS12,			6)
+DEFINE_RELOCATION(R_ARM_THM_ABS5,		7)
+DEFINE_RELOCATION(R_ARM_ABS8,			8)
+DEFINE_RELOCATION(R_ARM_SBREL32,		9)
+DEFINE_RELOCATION(R_ARM_THM_CALL,		10)
+DEFINE_RELOCATION(R_ARM_THM_PC8,		11)
+DEFINE_RELOCATION(R_ARM_BREL_ADJ,		12)
+DEFINE_RELOCATION(R_ARM_SWI24,			13)
+DEFINE_RELOCATION(R_ARM_TLS_DESC,		13)
+DEFINE_RELOCATION(R_ARM_THM_SWI8,		14)
+DEFINE_RELOCATION(R_ARM_XPC25,			15)
+DEFINE_RELOCATION(R_ARM_THM_XPC22,		16)
+DEFINE_RELOCATION(R_ARM_TLS_DTPMOD32,		17)
+DEFINE_RELOCATION(R_ARM_TLS_DTPOFF32,		18)
+DEFINE_RELOCATION(R_ARM_TLS_TPOFF32,		19)
+DEFINE_RELOCATION(R_ARM_COPY,			20)
+DEFINE_RELOCATION(R_ARM_GLOB_DAT,		21)
+DEFINE_RELOCATION(R_ARM_JUMP_SLOT,		22)
+DEFINE_RELOCATION(R_ARM_RELATIVE,		23)
+DEFINE_RELOCATION(R_ARM_GOTOFF32,		24)
+DEFINE_RELOCATION(R_ARM_BASE_PREL,		25)
+DEFINE_RELOCATION(R_ARM_GOT_BREL,		26)
+DEFINE_RELOCATION(R_ARM_PLT32,			27)
+DEFINE_RELOCATION(R_ARM_CALL,			28)
+DEFINE_RELOCATION(R_ARM_JUMP24,			29)
+DEFINE_RELOCATION(R_ARM_THM_JUMP24,		30)
+DEFINE_RELOCATION(R_ARM_BASE_ABS,		31)
+DEFINE_RELOCATION(R_ARM_ALU_PCREL_7_0,		32)
+DEFINE_RELOCATION(R_ARM_ALU_PCREL_15_8,		33)
+DEFINE_RELOCATION(R_ARM_ALU_PCREL_23_15,	34)
+DEFINE_RELOCATION(R_ARM_LDR_SBREL_11_0_NC,	35)
+DEFINE_RELOCATION(R_ARM_ALU_SBREL_19_12_NC,	36)
+DEFINE_RELOCATION(R_ARM_ALU_SBREL_27_20_CK,	37)
+DEFINE_RELOCATION(R_ARM_TARGET1,		38)
+DEFINE_RELOCATION(R_ARM_SBREL31,		39)
+DEFINE_RELOCATION(R_ARM_V4BX,			40)
+DEFINE_RELOCATION(R_ARM_TARGET2,		41)
+DEFINE_RELOCATION(R_ARM_PREL31,			42)
+DEFINE_RELOCATION(R_ARM_MOVW_ABS_NC,		43)
+DEFINE_RELOCATION(R_ARM_MOVT_ABS,		44)
+DEFINE_RELOCATION(R_ARM_MOVW_PREL_NC,		45)
+DEFINE_RELOCATION(R_ARM_MOVT_PREL,		46)
+DEFINE_RELOCATION(R_ARM_THM_MOVW_ABS_NC,	47)
+DEFINE_RELOCATION(R_ARM_THM_MOVT_ABS,		48)
+DEFINE_RELOCATION(R_ARM_THM_MOVW_PREL_NC,	49)
+DEFINE_RELOCATION(R_ARM_THM_MOVT_PREL,		50)
+DEFINE_RELOCATION(R_ARM_THM_JUMP19,		51)
+DEFINE_RELOCATION(R_ARM_THM_JUMP6,		52)
+DEFINE_RELOCATION(R_ARM_THM_ALU_PREL_11_0,	53)
+DEFINE_RELOCATION(R_ARM_THM_PC12,		54)
+DEFINE_RELOCATION(R_ARM_ABS32_NOI,		55)
+DEFINE_RELOCATION(R_ARM_REL32_NOI,		56)
+DEFINE_RELOCATION(R_ARM_ALU_PC_G0_NC,		57)
+DEFINE_RELOCATION(R_ARM_ALU_PC_G0,		58)
+DEFINE_RELOCATION(R_ARM_ALU_PC_G1_NC,		59)
+DEFINE_RELOCATION(R_ARM_ALU_PC_G1,		60)
+DEFINE_RELOCATION(R_ARM_ALU_PC_G2,		61)
+DEFINE_RELOCATION(R_ARM_LDR_PC_G1,		62)
+DEFINE_RELOCATION(R_ARM_LDR_PC_G2,		63)
+DEFINE_RELOCATION(R_ARM_LDRS_PC_G0,		64)
+DEFINE_RELOCATION(R_ARM_LDRS_PC_G1,		65)
+DEFINE_RELOCATION(R_ARM_LDRS_PC_G2,		66)
+DEFINE_RELOCATION(R_ARM_LDC_PC_G0,		67)
+DEFINE_RELOCATION(R_ARM_LDC_PC_G1,		68)
+DEFINE_RELOCATION(R_ARM_LDC_PC_G2,		69)
+DEFINE_RELOCATION(R_ARM_ALU_SB_G0_NC,		70)
+DEFINE_RELOCATION(R_ARM_ALU_SB_G0,		71)
+DEFINE_RELOCATION(R_ARM_ALU_SB_G1_NC,		72)
+DEFINE_RELOCATION(R_ARM_ALU_SB_G1,		73)
+DEFINE_RELOCATION(R_ARM_ALU_SB_G2,		74)
+DEFINE_RELOCATION(R_ARM_LDR_SB_G0,		75)
+DEFINE_RELOCATION(R_ARM_LDR_SB_G1,		76)
+DEFINE_RELOCATION(R_ARM_LDR_SB_G2,		77)
+DEFINE_RELOCATION(R_ARM_LDRS_SB_G0,		78)
+DEFINE_RELOCATION(R_ARM_LDRS_SB_G1,		79)
+DEFINE_RELOCATION(R_ARM_LDRS_SB_G2,		80)
+DEFINE_RELOCATION(R_ARM_LDC_SB_G0,		81)
+DEFINE_RELOCATION(R_ARM_LDC_SB_G1,		82)
+DEFINE_RELOCATION(R_ARM_LDC_SB_G2,		83)
+DEFINE_RELOCATION(R_ARM_MOVW_BREL_NC,		84)
+DEFINE_RELOCATION(R_ARM_MOVT_BREL,		85)
+DEFINE_RELOCATION(R_ARM_MOVW_BREL,		86)
+DEFINE_RELOCATION(R_ARM_THM_MOVW_BREL_NC,	87)
+DEFINE_RELOCATION(R_ARM_THM_MOVT_BREL,		88)
+DEFINE_RELOCATION(R_ARM_THM_MOVW_BREL,		89)
+DEFINE_RELOCATION(R_ARM_TLS_GOTDESC,		90)
+DEFINE_RELOCATION(R_ARM_TLS_CALL,		91)
+DEFINE_RELOCATION(R_ARM_TLS_DESCSEQ,		92)
+DEFINE_RELOCATION(R_ARM_THM_TLS_CALL,		93)
+DEFINE_RELOCATION(R_ARM_PLT32_ABS,		94)
+DEFINE_RELOCATION(R_ARM_GOT_ABS,		95)
+DEFINE_RELOCATION(R_ARM_GOT_PREL,		96)
+DEFINE_RELOCATION(R_ARM_GOT_BREL12,		97)
+DEFINE_RELOCATION(R_ARM_GOTOFF12,		98)
+DEFINE_RELOCATION(R_ARM_GOTRELAX,		99)
+DEFINE_RELOCATION(R_ARM_GNU_VTENTRY,		100)
+DEFINE_RELOCATION(R_ARM_GNU_VTINHERIT,		101)
+DEFINE_RELOCATION(R_ARM_THM_JUMP11,		102)
+DEFINE_RELOCATION(R_ARM_THM_JUMP8,		103)
+DEFINE_RELOCATION(R_ARM_TLS_GD32,		104)
+DEFINE_RELOCATION(R_ARM_TLS_LDM32,		105)
+DEFINE_RELOCATION(R_ARM_TLS_LDO32,		106)
+DEFINE_RELOCATION(R_ARM_TLS_IE32,		107)
+DEFINE_RELOCATION(R_ARM_TLS_LE32,		108)
+DEFINE_RELOCATION(R_ARM_TLS_LDO12,		109)
+DEFINE_RELOCATION(R_ARM_TLS_LE12,		110)
+DEFINE_RELOCATION(R_ARM_TLS_IE12GP,		111)
+DEFINE_RELOCATION(R_ARM_PRIVATE_0,		112)
+DEFINE_RELOCATION(R_ARM_PRIVATE_1,		113)
+DEFINE_RELOCATION(R_ARM_PRIVATE_2,		114)
+DEFINE_RELOCATION(R_ARM_PRIVATE_3,		115)
+DEFINE_RELOCATION(R_ARM_PRIVATE_4,		116)
+DEFINE_RELOCATION(R_ARM_PRIVATE_5,		117)
+DEFINE_RELOCATION(R_ARM_PRIVATE_6,		118)
+DEFINE_RELOCATION(R_ARM_PRIVATE_7,		119)
+DEFINE_RELOCATION(R_ARM_PRIVATE_8,		120)
+DEFINE_RELOCATION(R_ARM_PRIVATE_9,		121)
+DEFINE_RELOCATION(R_ARM_PRIVATE_10,		122)
+DEFINE_RELOCATION(R_ARM_PRIVATE_11,		123)
+DEFINE_RELOCATION(R_ARM_PRIVATE_12,		124)
+DEFINE_RELOCATION(R_ARM_PRIVATE_13,		125)
+DEFINE_RELOCATION(R_ARM_PRIVATE_14,		126)
+DEFINE_RELOCATION(R_ARM_PRIVATE_15,		127)
+DEFINE_RELOCATION(R_ARM_ME_TOO,			128)
+DEFINE_RELOCATION(R_ARM_THM_TLS_DESCSEQ16,	129)
+DEFINE_RELOCATION(R_ARM_THM_TLS_DESCSEQ32,	130)
+DEFINE_RELOCATION(R_ARM_THM_GOT_BREL12,		131)
+DEFINE_RELOCATION(R_ARM_IRELATIVE,		140)
+')
+
+define(`DEFINE_IA64_RELOCATIONS',`
+DEFINE_RELOCATION(R_IA_64_NONE,			0)
+DEFINE_RELOCATION(R_IA_64_IMM14,		0x21)
+DEFINE_RELOCATION(R_IA_64_IMM22,		0x22)
+DEFINE_RELOCATION(R_IA_64_IMM64,		0x23)
+DEFINE_RELOCATION(R_IA_64_DIR32MSB,		0x24)
+DEFINE_RELOCATION(R_IA_64_DIR32LSB,		0x25)
+DEFINE_RELOCATION(R_IA_64_DIR64MSB,		0x26)
+DEFINE_RELOCATION(R_IA_64_DIR64LSB,		0x27)
+DEFINE_RELOCATION(R_IA_64_GPREL22,		0x2a)
+DEFINE_RELOCATION(R_IA_64_GPREL64I,		0x2b)
+DEFINE_RELOCATION(R_IA_64_GPREL32MSB,		0x2c)
+DEFINE_RELOCATION(R_IA_64_GPREL32LSB,		0x2d)
+DEFINE_RELOCATION(R_IA_64_GPREL64MSB,		0x2e)
+DEFINE_RELOCATION(R_IA_64_GPREL64LSB,		0x2f)
+DEFINE_RELOCATION(R_IA_64_LTOFF22,		0x32)
+DEFINE_RELOCATION(R_IA_64_LTOFF64I,		0x33)
+DEFINE_RELOCATION(R_IA_64_PLTOFF22,		0x3a)
+DEFINE_RELOCATION(R_IA_64_PLTOFF64I,		0x3b)
+DEFINE_RELOCATION(R_IA_64_PLTOFF64MSB,		0x3e)
+DEFINE_RELOCATION(R_IA_64_PLTOFF64LSB,		0x3f)
+DEFINE_RELOCATION(R_IA_64_FPTR64I,		0x43)
+DEFINE_RELOCATION(R_IA_64_FPTR32MSB,		0x44)
+DEFINE_RELOCATION(R_IA_64_FPTR32LSB,		0x45)
+DEFINE_RELOCATION(R_IA_64_FPTR64MSB,		0x46)
+DEFINE_RELOCATION(R_IA_64_FPTR64LSB,		0x47)
+DEFINE_RELOCATION(R_IA_64_PCREL60B,		0x48)
+DEFINE_RELOCATION(R_IA_64_PCREL21B,		0x49)
+DEFINE_RELOCATION(R_IA_64_PCREL21M,		0x4a)
+DEFINE_RELOCATION(R_IA_64_PCREL21F,		0x4b)
+DEFINE_RELOCATION(R_IA_64_PCREL32MSB,		0x4c)
+DEFINE_RELOCATION(R_IA_64_PCREL32LSB,		0x4d)
+DEFINE_RELOCATION(R_IA_64_PCREL64MSB,		0x4e)
+DEFINE_RELOCATION(R_IA_64_PCREL64LSB,		0x4f)
+DEFINE_RELOCATION(R_IA_64_LTOFF_FPTR22,		0x52)
+DEFINE_RELOCATION(R_IA_64_LTOFF_FPTR64I,	0x53)
+DEFINE_RELOCATION(R_IA_64_LTOFF_FPTR32MSB,	0x54)
+DEFINE_RELOCATION(R_IA_64_LTOFF_FPTR32LSB,	0x55)
+DEFINE_RELOCATION(R_IA_64_LTOFF_FPTR64MSB,	0x56)
+DEFINE_RELOCATION(R_IA_64_LTOFF_FPTR64LSB,	0x57)
+DEFINE_RELOCATION(R_IA_64_SEGREL32MSB,		0x5c)
+DEFINE_RELOCATION(R_IA_64_SEGREL32LSB,		0x5d)
+DEFINE_RELOCATION(R_IA_64_SEGREL64MSB,		0x5e)
+DEFINE_RELOCATION(R_IA_64_SEGREL64LSB,		0x5f)
+DEFINE_RELOCATION(R_IA_64_SECREL32MSB,		0x64)
+DEFINE_RELOCATION(R_IA_64_SECREL32LSB,		0x65)
+DEFINE_RELOCATION(R_IA_64_SECREL64MSB,		0x66)
+DEFINE_RELOCATION(R_IA_64_SECREL64LSB,		0x67)
+DEFINE_RELOCATION(R_IA_64_REL32MSB,		0x6c)
+DEFINE_RELOCATION(R_IA_64_REL32LSB,		0x6d)
+DEFINE_RELOCATION(R_IA_64_REL64MSB,		0x6e)
+DEFINE_RELOCATION(R_IA_64_REL64LSB,		0x6f)
+DEFINE_RELOCATION(R_IA_64_LTV32MSB,		0x74)
+DEFINE_RELOCATION(R_IA_64_LTV32LSB,		0x75)
+DEFINE_RELOCATION(R_IA_64_LTV64MSB,		0x76)
+DEFINE_RELOCATION(R_IA_64_LTV64LSB,		0x77)
+DEFINE_RELOCATION(R_IA_64_PCREL21BI,		0x79)
+DEFINE_RELOCATION(R_IA_64_PCREL22,		0x7A)
+DEFINE_RELOCATION(R_IA_64_PCREL64I,		0x7B)
+DEFINE_RELOCATION(R_IA_64_IPLTMSB,		0x80)
+DEFINE_RELOCATION(R_IA_64_IPLTLSB,		0x81)
+DEFINE_RELOCATION(R_IA_64_SUB,			0x85)
+DEFINE_RELOCATION(R_IA_64_LTOFF22X,		0x86)
+DEFINE_RELOCATION(R_IA_64_LDXMOV,		0x87)
+DEFINE_RELOCATION(R_IA_64_TPREL14,		0x91)
+DEFINE_RELOCATION(R_IA_64_TPREL22,		0x92)
+DEFINE_RELOCATION(R_IA_64_TPREL64I,		0x93)
+DEFINE_RELOCATION(R_IA_64_TPREL64MSB,		0x96)
+DEFINE_RELOCATION(R_IA_64_TPREL64LSB,		0x97)
+DEFINE_RELOCATION(R_IA_64_LTOFF_TPREL22,	0x9A)
+DEFINE_RELOCATION(R_IA_64_DTPMOD64MSB,		0xA6)
+DEFINE_RELOCATION(R_IA_64_DTPMOD64LSB,		0xA7)
+DEFINE_RELOCATION(R_IA_64_LTOFF_DTPMOD22,	0xAA)
+DEFINE_RELOCATION(R_IA_64_DTPREL14,		0xB1)
+DEFINE_RELOCATION(R_IA_64_DTPREL22,		0xB2)
+DEFINE_RELOCATION(R_IA_64_DTPREL64I,		0xB3)
+DEFINE_RELOCATION(R_IA_64_DTPREL32MSB,		0xB4)
+DEFINE_RELOCATION(R_IA_64_DTPREL32LSB,		0xB5)
+DEFINE_RELOCATION(R_IA_64_DTPREL64MSB,		0xB6)
+DEFINE_RELOCATION(R_IA_64_DTPREL64LSB,		0xB7)
+DEFINE_RELOCATION(R_IA_64_LTOFF_DTPREL22,	0xBA)
+')
+
+define(`DEFINE_MIPS_RELOCATIONS',`
+DEFINE_RELOCATION(R_MIPS_NONE,			0)
+DEFINE_RELOCATION(R_MIPS_16,			1)
+DEFINE_RELOCATION(R_MIPS_32,			2)
+DEFINE_RELOCATION(R_MIPS_REL32,			3)
+DEFINE_RELOCATION(R_MIPS_26,			4)
+DEFINE_RELOCATION(R_MIPS_HI16,			5)
+DEFINE_RELOCATION(R_MIPS_LO16,			6)
+DEFINE_RELOCATION(R_MIPS_GPREL16,		7)
+DEFINE_RELOCATION(R_MIPS_LITERAL, 		8)
+DEFINE_RELOCATION(R_MIPS_GOT16,			9)
+DEFINE_RELOCATION(R_MIPS_PC16,			10)
+DEFINE_RELOCATION(R_MIPS_CALL16,		11)
+DEFINE_RELOCATION(R_MIPS_GPREL32,		12)
+DEFINE_RELOCATION(R_MIPS_SHIFT5,		16)
+DEFINE_RELOCATION(R_MIPS_SHIFT6,		17)
+DEFINE_RELOCATION(R_MIPS_64,			18)
+DEFINE_RELOCATION(R_MIPS_GOT_DISP,		19)
+DEFINE_RELOCATION(R_MIPS_GOT_PAGE,		20)
+DEFINE_RELOCATION(R_MIPS_GOT_OFST,		21)
+DEFINE_RELOCATION(R_MIPS_GOT_HI16,		22)
+DEFINE_RELOCATION(R_MIPS_GOT_LO16,		23)
+DEFINE_RELOCATION(R_MIPS_SUB,			24)
+DEFINE_RELOCATION(R_MIPS_CALLHI16,		30)
+DEFINE_RELOCATION(R_MIPS_CALLLO16,		31)
+DEFINE_RELOCATION(R_MIPS_JALR,			37)
+DEFINE_RELOCATION(R_MIPS_TLS_DTPMOD32,		38)
+DEFINE_RELOCATION(R_MIPS_TLS_DTPREL32,		39)
+DEFINE_RELOCATION(R_MIPS_TLS_DTPMOD64,		40)
+DEFINE_RELOCATION(R_MIPS_TLS_DTPREL64,		41)
+DEFINE_RELOCATION(R_MIPS_TLS_GD,		42)
+DEFINE_RELOCATION(R_MIPS_TLS_LDM,		43)
+DEFINE_RELOCATION(R_MIPS_TLS_DTPREL_HI16,	44)
+DEFINE_RELOCATION(R_MIPS_TLS_DTPREL_LO16,	45)
+DEFINE_RELOCATION(R_MIPS_TLS_GOTTPREL,		46)
+DEFINE_RELOCATION(R_MIPS_TLS_TPREL32,		47)
+DEFINE_RELOCATION(R_MIPS_TLS_TPREL64,		48)
+DEFINE_RELOCATION(R_MIPS_TLS_TPREL_HI16,	49)
+DEFINE_RELOCATION(R_MIPS_TLS_TPREL_LO16,	50)
+')
+
+define(`DEFINE_PPC32_RELOCATIONS',`
+DEFINE_RELOCATION(R_PPC_NONE,		0)
+DEFINE_RELOCATION(R_PPC_ADDR32,		1)
+DEFINE_RELOCATION(R_PPC_ADDR24,		2)
+DEFINE_RELOCATION(R_PPC_ADDR16,		3)
+DEFINE_RELOCATION(R_PPC_ADDR16_LO,	4)
+DEFINE_RELOCATION(R_PPC_ADDR16_HI,	5)
+DEFINE_RELOCATION(R_PPC_ADDR16_HA,	6)
+DEFINE_RELOCATION(R_PPC_ADDR14,		7)
+DEFINE_RELOCATION(R_PPC_ADDR14_BRTAKEN,	8)
+DEFINE_RELOCATION(R_PPC_ADDR14_BRNTAKEN, 9)
+DEFINE_RELOCATION(R_PPC_REL24,		10)
+DEFINE_RELOCATION(R_PPC_REL14,		11)
+DEFINE_RELOCATION(R_PPC_REL14_BRTAKEN,	12)
+DEFINE_RELOCATION(R_PPC_REL14_BRNTAKEN,	13)
+DEFINE_RELOCATION(R_PPC_GOT16,		14)
+DEFINE_RELOCATION(R_PPC_GOT16_LO,	15)
+DEFINE_RELOCATION(R_PPC_GOT16_HI,	16)
+DEFINE_RELOCATION(R_PPC_GOT16_HA,	17)
+DEFINE_RELOCATION(R_PPC_PLTREL24,	18)
+DEFINE_RELOCATION(R_PPC_COPY,		19)
+DEFINE_RELOCATION(R_PPC_GLOB_DAT,	20)
+DEFINE_RELOCATION(R_PPC_JMP_SLOT,	21)
+DEFINE_RELOCATION(R_PPC_RELATIVE,	22)
+DEFINE_RELOCATION(R_PPC_LOCAL24PC,	23)
+DEFINE_RELOCATION(R_PPC_UADDR32,	24)
+DEFINE_RELOCATION(R_PPC_UADDR16,	25)
+DEFINE_RELOCATION(R_PPC_REL32,		26)
+DEFINE_RELOCATION(R_PPC_PLT32,		27)
+DEFINE_RELOCATION(R_PPC_PLTREL32,	28)
+DEFINE_RELOCATION(R_PPC_PLT16_LO,	29)
+DEFINE_RELOCATION(R_PPC_PLT16_HI,	30)
+DEFINE_RELOCATION(R_PPC_PLT16_HA,	31)
+DEFINE_RELOCATION(R_PPC_SDAREL16,	32)
+DEFINE_RELOCATION(R_PPC_SECTOFF,	33)
+DEFINE_RELOCATION(R_PPC_SECTOFF_LO,	34)
+DEFINE_RELOCATION(R_PPC_SECTOFF_HI,	35)
+DEFINE_RELOCATION(R_PPC_SECTOFF_HA,	36)
+DEFINE_RELOCATION(R_PPC_ADDR30,		37)
+DEFINE_RELOCATION(R_PPC_TLS,		67)
+DEFINE_RELOCATION(R_PPC_DTPMOD32,	68)
+DEFINE_RELOCATION(R_PPC_TPREL16,	69)
+DEFINE_RELOCATION(R_PPC_TPREL16_LO,	70)
+DEFINE_RELOCATION(R_PPC_TPREL16_HI,	71)
+DEFINE_RELOCATION(R_PPC_TPREL16_HA,	72)
+DEFINE_RELOCATION(R_PPC_TPREL32,	73)
+DEFINE_RELOCATION(R_PPC_DTPREL16,	74)
+DEFINE_RELOCATION(R_PPC_DTPREL16_LO,	75)
+DEFINE_RELOCATION(R_PPC_DTPREL16_HI,	76)
+DEFINE_RELOCATION(R_PPC_DTPREL16_HA,	77)
+DEFINE_RELOCATION(R_PPC_DTPREL32,	78)
+DEFINE_RELOCATION(R_PPC_GOT_TLSGD16,	79)
+DEFINE_RELOCATION(R_PPC_GOT_TLSGD16_LO,	80)
+DEFINE_RELOCATION(R_PPC_GOT_TLSGD16_HI,	81)
+DEFINE_RELOCATION(R_PPC_GOT_TLSGD16_HA,	82)
+DEFINE_RELOCATION(R_PPC_GOT_TLSLD16,	83)
+DEFINE_RELOCATION(R_PPC_GOT_TLSLD16_LO,	84)
+DEFINE_RELOCATION(R_PPC_GOT_TLSLD16_HI,	85)
+DEFINE_RELOCATION(R_PPC_GOT_TLSLD16_HA,	86)
+DEFINE_RELOCATION(R_PPC_GOT_TPREL16,	87)
+DEFINE_RELOCATION(R_PPC_GOT_TPREL16_LO,	88)
+DEFINE_RELOCATION(R_PPC_GOT_TPREL16_HI,	89)
+DEFINE_RELOCATION(R_PPC_GOT_TPREL16_HA,	90)
+DEFINE_RELOCATION(R_PPC_GOT_DTPREL16,	91)
+DEFINE_RELOCATION(R_PPC_GOT_DTPREL16_LO, 92)
+DEFINE_RELOCATION(R_PPC_GOT_DTPREL16_HI, 93)
+DEFINE_RELOCATION(R_PPC_GOT_DTPREL16_HA, 94)
+DEFINE_RELOCATION(R_PPC_TLSGD,		95)
+DEFINE_RELOCATION(R_PPC_TLSLD,		96)
+DEFINE_RELOCATION(R_PPC_EMB_NADDR32,	101)
+DEFINE_RELOCATION(R_PPC_EMB_NADDR16,	102)
+DEFINE_RELOCATION(R_PPC_EMB_NADDR16_LO,	103)
+DEFINE_RELOCATION(R_PPC_EMB_NADDR16_HI,	104)
+DEFINE_RELOCATION(R_PPC_EMB_NADDR16_HA,	105)
+DEFINE_RELOCATION(R_PPC_EMB_SDAI16,	106)
+DEFINE_RELOCATION(R_PPC_EMB_SDA2I16,	107)
+DEFINE_RELOCATION(R_PPC_EMB_SDA2REL,	108)
+DEFINE_RELOCATION(R_PPC_EMB_SDA21,	109)
+DEFINE_RELOCATION(R_PPC_EMB_MRKREF,	110)
+DEFINE_RELOCATION(R_PPC_EMB_RELSEC16,	111)
+DEFINE_RELOCATION(R_PPC_EMB_RELST_LO,	112)
+DEFINE_RELOCATION(R_PPC_EMB_RELST_HI,	113)
+DEFINE_RELOCATION(R_PPC_EMB_RELST_HA,	114)
+DEFINE_RELOCATION(R_PPC_EMB_BIT_FLD,	115)
+DEFINE_RELOCATION(R_PPC_EMB_RELSDA,	116)
+')
+
+define(`DEFINE_PPC64_RELOCATIONS',`
+DEFINE_RELOCATION(R_PPC64_NONE,			0)
+DEFINE_RELOCATION(R_PPC64_ADDR32,		1)
+DEFINE_RELOCATION(R_PPC64_ADDR24,		2)
+DEFINE_RELOCATION(R_PPC64_ADDR16,		3)
+DEFINE_RELOCATION(R_PPC64_ADDR16_LO,		4)
+DEFINE_RELOCATION(R_PPC64_ADDR16_HI,		5)
+DEFINE_RELOCATION(R_PPC64_ADDR16_HA,		6)
+DEFINE_RELOCATION(R_PPC64_ADDR14,		7)
+DEFINE_RELOCATION(R_PPC64_ADDR14_BRTAKEN,	8)
+DEFINE_RELOCATION(R_PPC64_ADDR14_BRNTAKEN,	9)
+DEFINE_RELOCATION(R_PPC64_REL24,		10)
+DEFINE_RELOCATION(R_PPC64_REL14,		11)
+DEFINE_RELOCATION(R_PPC64_REL14_BRTAKEN,	12)
+DEFINE_RELOCATION(R_PPC64_REL14_BRNTAKEN,	13)
+DEFINE_RELOCATION(R_PPC64_GOT16,		14)
+DEFINE_RELOCATION(R_PPC64_GOT16_LO,		15)
+DEFINE_RELOCATION(R_PPC64_GOT16_HI,		16)
+DEFINE_RELOCATION(R_PPC64_GOT16_HA,		17)
+DEFINE_RELOCATION(R_PPC64_COPY,			19)
+DEFINE_RELOCATION(R_PPC64_GLOB_DAT,		20)
+DEFINE_RELOCATION(R_PPC64_JMP_SLOT,		21)
+DEFINE_RELOCATION(R_PPC64_RELATIVE,		22)
+DEFINE_RELOCATION(R_PPC64_UADDR32,		24)
+DEFINE_RELOCATION(R_PPC64_UADDR16,		25)
+DEFINE_RELOCATION(R_PPC64_REL32,		26)
+DEFINE_RELOCATION(R_PPC64_PLT32,		27)
+DEFINE_RELOCATION(R_PPC64_PLTREL32,		28)
+DEFINE_RELOCATION(R_PPC64_PLT16_LO,		29)
+DEFINE_RELOCATION(R_PPC64_PLT16_HI,		30)
+DEFINE_RELOCATION(R_PPC64_PLT16_HA,		31)
+DEFINE_RELOCATION(R_PPC64_SECTOFF,		33)
+DEFINE_RELOCATION(R_PPC64_SECTOFF_LO,		34)
+DEFINE_RELOCATION(R_PPC64_SECTOFF_HI,		35)
+DEFINE_RELOCATION(R_PPC64_SECTOFF_HA,		36)
+DEFINE_RELOCATION(R_PPC64_ADDR30,		37)
+DEFINE_RELOCATION(R_PPC64_ADDR64,		38)
+DEFINE_RELOCATION(R_PPC64_ADDR16_HIGHER,	39)
+DEFINE_RELOCATION(R_PPC64_ADDR16_HIGHERA,	40)
+DEFINE_RELOCATION(R_PPC64_ADDR16_HIGHEST,	41)
+DEFINE_RELOCATION(R_PPC64_ADDR16_HIGHESTA,	42)
+DEFINE_RELOCATION(R_PPC64_UADDR64,		43)
+DEFINE_RELOCATION(R_PPC64_REL64,		44)
+DEFINE_RELOCATION(R_PPC64_PLT64,		45)
+DEFINE_RELOCATION(R_PPC64_PLTREL64,		46)
+DEFINE_RELOCATION(R_PPC64_TOC16,		47)
+DEFINE_RELOCATION(R_PPC64_TOC16_LO,		48)
+DEFINE_RELOCATION(R_PPC64_TOC16_HI,		49)
+DEFINE_RELOCATION(R_PPC64_TOC16_HA,		50)
+DEFINE_RELOCATION(R_PPC64_TOC,			51)
+DEFINE_RELOCATION(R_PPC64_PLTGOT16,		52)
+DEFINE_RELOCATION(R_PPC64_PLTGOT16_LO,		53)
+DEFINE_RELOCATION(R_PPC64_PLTGOT16_HI,		54)
+DEFINE_RELOCATION(R_PPC64_PLTGOT16_HA,		55)
+DEFINE_RELOCATION(R_PPC64_ADDR16_DS,		56)
+DEFINE_RELOCATION(R_PPC64_ADDR16_LO_DS,		57)
+DEFINE_RELOCATION(R_PPC64_GOT16_DS,		58)
+DEFINE_RELOCATION(R_PPC64_GOT16_LO_DS,		59)
+DEFINE_RELOCATION(R_PPC64_PLT16_LO_DS,		60)
+DEFINE_RELOCATION(R_PPC64_SECTOFF_DS,		61)
+DEFINE_RELOCATION(R_PPC64_SECTOFF_LO_DS,	62)
+DEFINE_RELOCATION(R_PPC64_TOC16_DS,		63)
+DEFINE_RELOCATION(R_PPC64_TOC16_LO_DS,		64)
+DEFINE_RELOCATION(R_PPC64_PLTGOT16_DS,		65)
+DEFINE_RELOCATION(R_PPC64_PLTGOT16_LO_DS,	66)
+DEFINE_RELOCATION(R_PPC64_TLS,			67)
+DEFINE_RELOCATION(R_PPC64_DTPMOD64,		68)
+DEFINE_RELOCATION(R_PPC64_TPREL16,		69)
+DEFINE_RELOCATION(R_PPC64_TPREL16_LO,		60)
+DEFINE_RELOCATION(R_PPC64_TPREL16_HI,		71)
+DEFINE_RELOCATION(R_PPC64_TPREL16_HA,		72)
+DEFINE_RELOCATION(R_PPC64_TPREL64,		73)
+DEFINE_RELOCATION(R_PPC64_DTPREL16,		74)
+DEFINE_RELOCATION(R_PPC64_DTPREL16_LO,		75)
+DEFINE_RELOCATION(R_PPC64_DTPREL16_HI,		76)
+DEFINE_RELOCATION(R_PPC64_DTPREL16_HA,		77)
+DEFINE_RELOCATION(R_PPC64_DTPREL64,		78)
+DEFINE_RELOCATION(R_PPC64_GOT_TLSGD16,		79)
+DEFINE_RELOCATION(R_PPC64_GOT_TLSGD16_LO,	80)
+DEFINE_RELOCATION(R_PPC64_GOT_TLSGD16_HI,	81)
+DEFINE_RELOCATION(R_PPC64_GOT_TLSGD16_HA,	82)
+DEFINE_RELOCATION(R_PPC64_GOT_TLSLD16,		83)
+DEFINE_RELOCATION(R_PPC64_GOT_TLSLD16_LO,	84)
+DEFINE_RELOCATION(R_PPC64_GOT_TLSLD16_HI,	85)
+DEFINE_RELOCATION(R_PPC64_GOT_TLSLD16_HA,	86)
+DEFINE_RELOCATION(R_PPC64_GOT_TPREL16_DS,	87)
+DEFINE_RELOCATION(R_PPC64_GOT_TPREL16_LO_DS,	88)
+DEFINE_RELOCATION(R_PPC64_GOT_TPREL16_HI,	89)
+DEFINE_RELOCATION(R_PPC64_GOT_TPREL16_HA,	90)
+DEFINE_RELOCATION(R_PPC64_GOT_DTPREL16_DS,	91)
+DEFINE_RELOCATION(R_PPC64_GOT_DTPREL16_LO_DS,	92)
+DEFINE_RELOCATION(R_PPC64_GOT_DTPREL16_HI,	93)
+DEFINE_RELOCATION(R_PPC64_GOT_DTPREL16_HA,	94)
+DEFINE_RELOCATION(R_PPC64_TPREL16_DS,		95)
+DEFINE_RELOCATION(R_PPC64_TPREL16_LO_DS,	96)
+DEFINE_RELOCATION(R_PPC64_TPREL16_HIGHER,	97)
+DEFINE_RELOCATION(R_PPC64_TPREL16_HIGHERA,	98)
+DEFINE_RELOCATION(R_PPC64_TPREL16_HIGHEST,	99)
+DEFINE_RELOCATION(R_PPC64_TPREL16_HIGHESTA,	100)
+DEFINE_RELOCATION(R_PPC64_DTPREL16_DS,		101)
+DEFINE_RELOCATION(R_PPC64_DTPREL16_LO_DS,	102)
+DEFINE_RELOCATION(R_PPC64_DTPREL16_HIGHER,	103)
+DEFINE_RELOCATION(R_PPC64_DTPREL16_HIGHERA,	104)
+DEFINE_RELOCATION(R_PPC64_DTPREL16_HIGHEST,	105)
+DEFINE_RELOCATION(R_PPC64_DTPREL16_HIGHESTA,	106)
+DEFINE_RELOCATION(R_PPC64_TLSGD,		107)
+DEFINE_RELOCATION(R_PPC64_TLSLD,		108)
+')
+
+define(`DEFINE_RISCV_RELOCATIONS',`
+DEFINE_RELOCATION(R_RISCV_NONE,			0)
+DEFINE_RELOCATION(R_RISCV_32,			1)
+DEFINE_RELOCATION(R_RISCV_64,			2)
+DEFINE_RELOCATION(R_RISCV_RELATIVE,		3)
+DEFINE_RELOCATION(R_RISCV_COPY,			4)
+DEFINE_RELOCATION(R_RISCV_JUMP_SLOT,		5)
+DEFINE_RELOCATION(R_RISCV_TLS_DTPMOD32,		6)
+DEFINE_RELOCATION(R_RISCV_TLS_DTPMOD64,		7)
+DEFINE_RELOCATION(R_RISCV_TLS_DTPREL32,		8)
+DEFINE_RELOCATION(R_RISCV_TLS_DTPREL64,		9)
+DEFINE_RELOCATION(R_RISCV_TLS_TPREL32,		10)
+DEFINE_RELOCATION(R_RISCV_TLS_TPREL64,		11)
+DEFINE_RELOCATION(R_RISCV_BRANCH,		16)
+DEFINE_RELOCATION(R_RISCV_JAL,			17)
+DEFINE_RELOCATION(R_RISCV_CALL,			18)
+DEFINE_RELOCATION(R_RISCV_CALL_PLT,		19)
+DEFINE_RELOCATION(R_RISCV_GOT_HI20,		20)
+DEFINE_RELOCATION(R_RISCV_TLS_GOT_HI20,		21)
+DEFINE_RELOCATION(R_RISCV_TLS_GD_HI20,		22)
+DEFINE_RELOCATION(R_RISCV_PCREL_HI20,		23)
+DEFINE_RELOCATION(R_RISCV_PCREL_LO12_I,		24)
+DEFINE_RELOCATION(R_RISCV_PCREL_LO12_S,		25)
+DEFINE_RELOCATION(R_RISCV_HI20,			26)
+DEFINE_RELOCATION(R_RISCV_LO12_I,		27)
+DEFINE_RELOCATION(R_RISCV_LO12_S,		28)
+DEFINE_RELOCATION(R_RISCV_TPREL_HI20,		29)
+DEFINE_RELOCATION(R_RISCV_TPREL_LO12_I,		30)
+DEFINE_RELOCATION(R_RISCV_TPREL_LO12_S,		31)
+DEFINE_RELOCATION(R_RISCV_TPREL_ADD,		32)
+DEFINE_RELOCATION(R_RISCV_ADD8,			33)
+DEFINE_RELOCATION(R_RISCV_ADD16,		34)
+DEFINE_RELOCATION(R_RISCV_ADD32,		35)
+DEFINE_RELOCATION(R_RISCV_ADD64,		36)
+DEFINE_RELOCATION(R_RISCV_SUB8,			37)
+DEFINE_RELOCATION(R_RISCV_SUB16,		38)
+DEFINE_RELOCATION(R_RISCV_SUB32,		39)
+DEFINE_RELOCATION(R_RISCV_SUB64,		40)
+DEFINE_RELOCATION(R_RISCV_GNU_VTINHERIT,	41)
+DEFINE_RELOCATION(R_RISCV_GNU_VTENTRY,		42)
+DEFINE_RELOCATION(R_RISCV_ALIGN,		43)
+DEFINE_RELOCATION(R_RISCV_RVC_BRANCH,		44)
+DEFINE_RELOCATION(R_RISCV_RVC_JUMP,		45)
+DEFINE_RELOCATION(R_RISCV_RVC_LUI,		46)
+DEFINE_RELOCATION(R_RISCV_GPREL_I,		47)
+DEFINE_RELOCATION(R_RISCV_GPREL_S,		48)
+DEFINE_RELOCATION(R_RISCV_TPREL_I,		49)
+DEFINE_RELOCATION(R_RISCV_TPREL_S,		50)
+DEFINE_RELOCATION(R_RISCV_RELAX,		51)
+DEFINE_RELOCATION(R_RISCV_SUB6,			52)
+DEFINE_RELOCATION(R_RISCV_SET6,			53)
+DEFINE_RELOCATION(R_RISCV_SET8,			54)
+DEFINE_RELOCATION(R_RISCV_SET16,		55)
+DEFINE_RELOCATION(R_RISCV_SET32,		56)
+DEFINE_RELOCATION(R_RISCV_32_PCREL,		57)
+DEFINE_RELOCATION(R_RISCV_IRELATIVE,		58)
+')
+
+define(`DEFINE_SPARC_RELOCATIONS',`
+DEFINE_RELOCATION(R_SPARC_NONE,		0)
+DEFINE_RELOCATION(R_SPARC_8,		1)
+DEFINE_RELOCATION(R_SPARC_16,		2)
+DEFINE_RELOCATION(R_SPARC_32, 		3)
+DEFINE_RELOCATION(R_SPARC_DISP8,	4)
+DEFINE_RELOCATION(R_SPARC_DISP16,	5)
+DEFINE_RELOCATION(R_SPARC_DISP32,	6)
+DEFINE_RELOCATION(R_SPARC_WDISP30,	7)
+DEFINE_RELOCATION(R_SPARC_WDISP22,	8)
+DEFINE_RELOCATION(R_SPARC_HI22,		9)
+DEFINE_RELOCATION(R_SPARC_22,		10)
+DEFINE_RELOCATION(R_SPARC_13,		11)
+DEFINE_RELOCATION(R_SPARC_LO10,		12)
+DEFINE_RELOCATION(R_SPARC_GOT10,	13)
+DEFINE_RELOCATION(R_SPARC_GOT13,	14)
+DEFINE_RELOCATION(R_SPARC_GOT22,	15)
+DEFINE_RELOCATION(R_SPARC_PC10,		16)
+DEFINE_RELOCATION(R_SPARC_PC22,		17)
+DEFINE_RELOCATION(R_SPARC_WPLT30,	18)
+DEFINE_RELOCATION(R_SPARC_COPY,		19)
+DEFINE_RELOCATION(R_SPARC_GLOB_DAT,	20)
+DEFINE_RELOCATION(R_SPARC_JMP_SLOT,	21)
+DEFINE_RELOCATION(R_SPARC_RELATIVE,	22)
+DEFINE_RELOCATION(R_SPARC_UA32,		23)
+DEFINE_RELOCATION(R_SPARC_PLT32,	24)
+DEFINE_RELOCATION(R_SPARC_HIPLT22,	25)
+DEFINE_RELOCATION(R_SPARC_LOPLT10,	26)
+DEFINE_RELOCATION(R_SPARC_PCPLT32,	27)
+DEFINE_RELOCATION(R_SPARC_PCPLT22,	28)
+DEFINE_RELOCATION(R_SPARC_PCPLT10,	29)
+DEFINE_RELOCATION(R_SPARC_10,		30)
+DEFINE_RELOCATION(R_SPARC_11,		31)
+DEFINE_RELOCATION(R_SPARC_64,		32)
+DEFINE_RELOCATION(R_SPARC_OLO10,	33)
+DEFINE_RELOCATION(R_SPARC_HH22,		34)
+DEFINE_RELOCATION(R_SPARC_HM10,		35)
+DEFINE_RELOCATION(R_SPARC_LM22,		36)
+DEFINE_RELOCATION(R_SPARC_PC_HH22,	37)
+DEFINE_RELOCATION(R_SPARC_PC_HM10,	38)
+DEFINE_RELOCATION(R_SPARC_PC_LM22,	39)
+DEFINE_RELOCATION(R_SPARC_WDISP16,	40)
+DEFINE_RELOCATION(R_SPARC_WDISP19,	41)
+DEFINE_RELOCATION(R_SPARC_GLOB_JMP,	42)
+DEFINE_RELOCATION(R_SPARC_7,		43)
+DEFINE_RELOCATION(R_SPARC_5,		44)
+DEFINE_RELOCATION(R_SPARC_6,		45)
+DEFINE_RELOCATION(R_SPARC_DISP64,	46)
+DEFINE_RELOCATION(R_SPARC_PLT64,	47)
+DEFINE_RELOCATION(R_SPARC_HIX22,	48)
+DEFINE_RELOCATION(R_SPARC_LOX10,	49)
+DEFINE_RELOCATION(R_SPARC_H44,		50)
+DEFINE_RELOCATION(R_SPARC_M44,		51)
+DEFINE_RELOCATION(R_SPARC_L44,		52)
+DEFINE_RELOCATION(R_SPARC_REGISTER,	53)
+DEFINE_RELOCATION(R_SPARC_UA64,		54)
+DEFINE_RELOCATION(R_SPARC_UA16,		55)
+DEFINE_RELOCATION(R_SPARC_TLS_GD_HI22,	56)
+DEFINE_RELOCATION(R_SPARC_TLS_GD_LO10,	57)
+DEFINE_RELOCATION(R_SPARC_TLS_GD_ADD,	58)
+DEFINE_RELOCATION(R_SPARC_TLS_GD_CALL,	59)
+DEFINE_RELOCATION(R_SPARC_TLS_LDM_HI22,	60)
+DEFINE_RELOCATION(R_SPARC_TLS_LDM_LO10,	61)
+DEFINE_RELOCATION(R_SPARC_TLS_LDM_ADD,	62)
+DEFINE_RELOCATION(R_SPARC_TLS_LDM_CALL,	63)
+DEFINE_RELOCATION(R_SPARC_TLS_LDO_HIX22, 64)
+DEFINE_RELOCATION(R_SPARC_TLS_LDO_LOX10, 65)
+DEFINE_RELOCATION(R_SPARC_TLS_LDO_ADD,	66)
+DEFINE_RELOCATION(R_SPARC_TLS_IE_HI22,	67)
+DEFINE_RELOCATION(R_SPARC_TLS_IE_LO10,	68)
+DEFINE_RELOCATION(R_SPARC_TLS_IE_LD,	69)
+DEFINE_RELOCATION(R_SPARC_TLS_IE_LDX,	70)
+DEFINE_RELOCATION(R_SPARC_TLS_IE_ADD,	71)
+DEFINE_RELOCATION(R_SPARC_TLS_LE_HIX22,	72)
+DEFINE_RELOCATION(R_SPARC_TLS_LE_LOX10,	73)
+DEFINE_RELOCATION(R_SPARC_TLS_DTPMOD32,	74)
+DEFINE_RELOCATION(R_SPARC_TLS_DTPMOD64,	75)
+DEFINE_RELOCATION(R_SPARC_TLS_DTPOFF32,	76)
+DEFINE_RELOCATION(R_SPARC_TLS_DTPOFF64,	77)
+DEFINE_RELOCATION(R_SPARC_TLS_TPOFF32,	78)
+DEFINE_RELOCATION(R_SPARC_TLS_TPOFF64,	79)
+DEFINE_RELOCATION(R_SPARC_GOTDATA_HIX22, 80)
+DEFINE_RELOCATION(R_SPARC_GOTDATA_LOX10, 81)
+DEFINE_RELOCATION(R_SPARC_GOTDATA_OP_HIX22, 82)
+DEFINE_RELOCATION(R_SPARC_GOTDATA_OP_LOX10, 83)
+DEFINE_RELOCATION(R_SPARC_GOTDATA_OP,	84)
+DEFINE_RELOCATION(R_SPARC_H34,		85)
+')
+
+define(`DEFINE_X86_64_RELOCATIONS',`
+DEFINE_RELOCATION(R_X86_64_NONE,	0)
+DEFINE_RELOCATION(R_X86_64_64,		1)
+DEFINE_RELOCATION(R_X86_64_PC32,	2)
+DEFINE_RELOCATION(R_X86_64_GOT32,	3)
+DEFINE_RELOCATION(R_X86_64_PLT32,	4)
+DEFINE_RELOCATION(R_X86_64_COPY,	5)
+DEFINE_RELOCATION(R_X86_64_GLOB_DAT,	6)
+DEFINE_RELOCATION(R_X86_64_JUMP_SLOT,	7)
+DEFINE_RELOCATION(R_X86_64_RELATIVE,	8)
+DEFINE_RELOCATION(R_X86_64_GOTPCREL,	9)
+DEFINE_RELOCATION(R_X86_64_32,		10)
+DEFINE_RELOCATION(R_X86_64_32S,		11)
+DEFINE_RELOCATION(R_X86_64_16,		12)
+DEFINE_RELOCATION(R_X86_64_PC16,	13)
+DEFINE_RELOCATION(R_X86_64_8,		14)
+DEFINE_RELOCATION(R_X86_64_PC8,		15)
+DEFINE_RELOCATION(R_X86_64_DTPMOD64,	16)
+DEFINE_RELOCATION(R_X86_64_DTPOFF64,	17)
+DEFINE_RELOCATION(R_X86_64_TPOFF64,	18)
+DEFINE_RELOCATION(R_X86_64_TLSGD,	19)
+DEFINE_RELOCATION(R_X86_64_TLSLD,	20)
+DEFINE_RELOCATION(R_X86_64_DTPOFF32,	21)
+DEFINE_RELOCATION(R_X86_64_GOTTPOFF,	22)
+DEFINE_RELOCATION(R_X86_64_TPOFF32,	23)
+DEFINE_RELOCATION(R_X86_64_PC64,	24)
+DEFINE_RELOCATION(R_X86_64_GOTOFF64,	25)
+DEFINE_RELOCATION(R_X86_64_GOTPC32,	26)
+DEFINE_RELOCATION(R_X86_64_GOT64,	27)
+DEFINE_RELOCATION(R_X86_64_GOTPCREL64,	28)
+DEFINE_RELOCATION(R_X86_64_GOTPC64,	29)
+DEFINE_RELOCATION(R_X86_64_GOTPLT64,	30)
+DEFINE_RELOCATION(R_X86_64_PLTOFF64,	31)
+DEFINE_RELOCATION(R_X86_64_SIZE32,	32)
+DEFINE_RELOCATION(R_X86_64_SIZE64,	33)
+DEFINE_RELOCATION(R_X86_64_GOTPC32_TLSDESC, 34)
+DEFINE_RELOCATION(R_X86_64_TLSDESC_CALL, 35)
+DEFINE_RELOCATION(R_X86_64_TLSDESC,	36)
+DEFINE_RELOCATION(R_X86_64_IRELATIVE,	37)
+DEFINE_RELOCATION(R_X86_64_RELATIVE64,	38)
+DEFINE_RELOCATION(R_X86_64_GOTPCRELX,	41)
+DEFINE_RELOCATION(R_X86_64_REX_GOTPCRELX, 42)
+')
+
+define(`DEFINE_RELOCATIONS',`
+DEFINE_386_RELOCATIONS()
+DEFINE_AARCH64_RELOCATIONS()
+DEFINE_AMD64_RELOCATIONS()
+DEFINE_ARM_RELOCATIONS()
+DEFINE_IA64_RELOCATIONS()
+DEFINE_MIPS_RELOCATIONS()
+DEFINE_PPC32_RELOCATIONS()
+DEFINE_PPC64_RELOCATIONS()
+DEFINE_RISCV_RELOCATIONS()
+DEFINE_SPARC_RELOCATIONS()
+DEFINE_X86_64_RELOCATIONS()
+')
+
+define(`DEFINE_LL_FLAGS',`
+DEFINE_LL_FLAG(LL_NONE,			0,
+	`no flags')
+DEFINE_LL_FLAG(LL_EXACT_MATCH,		0x1,
+	`require an exact match')
+DEFINE_LL_FLAG(LL_IGNORE_INT_VER,	0x2,
+	`ignore version incompatibilities')
+DEFINE_LL_FLAG(LL_REQUIRE_MINOR,	0x4,
+	`')
+DEFINE_LL_FLAG(LL_EXPORTS,		0x8,
+	`')
+DEFINE_LL_FLAG(LL_DELAY_LOAD,		0x10,
+	`')
+DEFINE_LL_FLAG(LL_DELTA,		0x20,
+	`')
+')
+
+#
+# Note tags
+#
+define(`DEFINE_NOTE_ENTRY_TYPES',`
+DEFINE_NOTE_ENTRY(NT_ABI_TAG,			1,
+	`Tag indicating the ABI')
+DEFINE_NOTE_ENTRY(NT_GNU_HWCAP,			2,
+	`Hardware capabilities')
+DEFINE_NOTE_ENTRY(NT_GNU_BUILD_ID,		3,
+	`Build id, set by ld(1)')
+DEFINE_NOTE_ENTRY(NT_GNU_GOLD_VERSION,		4,
+	`Version number of the GNU gold linker')
+DEFINE_NOTE_ENTRY(NT_PRSTATUS,			1,
+	`Process status')
+DEFINE_NOTE_ENTRY(NT_FPREGSET,			2,
+	`Floating point information')
+DEFINE_NOTE_ENTRY(NT_PRPSINFO,			3,
+	`Process information')
+DEFINE_NOTE_ENTRY(NT_AUXV,			6,
+	`Auxiliary vector')
+DEFINE_NOTE_ENTRY(NT_PRXFPREG,		0x46E62B7FUL,
+	`Linux user_xfpregs structure')
+DEFINE_NOTE_ENTRY(NT_PSTATUS,			10,
+	`Linux process status')
+DEFINE_NOTE_ENTRY(NT_FPREGS,			12,
+	`Linux floating point regset')
+DEFINE_NOTE_ENTRY(NT_PSINFO,			13,
+	`Linux process information')
+DEFINE_NOTE_ENTRY(NT_LWPSTATUS,			16,
+	`Linux lwpstatus_t type')
+DEFINE_NOTE_ENTRY(NT_LWPSINFO,			17,
+	`Linux lwpinfo_t type')
+DEFINE_NOTE_ENTRY(NT_FREEBSD_NOINIT_TAG,	2,
+	`FreeBSD no .init tag')
+DEFINE_NOTE_ENTRY(NT_FREEBSD_ARCH_TAG,		3,
+	`FreeBSD arch tag')
+DEFINE_NOTE_ENTRY(NT_FREEBSD_FEATURE_CTL,	4,
+	`FreeBSD feature control')
+')
+
+# Aliases for the ABI tag.
+define(`DEFINE_NOTE_ENTRY_ALIASES',`
+DEFINE_NOTE_ENTRY_ALIAS(NT_FREEBSD_ABI_TAG,	NT_ABI_TAG)
+DEFINE_NOTE_ENTRY_ALIAS(NT_GNU_ABI_TAG,		NT_ABI_TAG)
+DEFINE_NOTE_ENTRY_ALIAS(NT_NETBSD_IDENT,	NT_ABI_TAG)
+DEFINE_NOTE_ENTRY_ALIAS(NT_OPENBSD_IDENT,	NT_ABI_TAG)
+')
+
+#
+# Option kinds.
+#
+define(`DEFINE_OPTION_KINDS',`
+DEFINE_OPTION_KIND(ODK_NULL,       0,
+	`undefined')
+DEFINE_OPTION_KIND(ODK_REGINFO,    1,
+	`register usage info')
+DEFINE_OPTION_KIND(ODK_EXCEPTIONS, 2,
+	`exception processing info')
+DEFINE_OPTION_KIND(ODK_PAD,        3,
+	`section padding')
+DEFINE_OPTION_KIND(ODK_HWPATCH,    4,
+	`hardware patch applied')
+DEFINE_OPTION_KIND(ODK_FILL,       5,
+	`fill value used by linker')
+DEFINE_OPTION_KIND(ODK_TAGS,       6,
+	`reserved space for tools')
+DEFINE_OPTION_KIND(ODK_HWAND,      7,
+	`hardware AND patch applied')
+DEFINE_OPTION_KIND(ODK_HWOR,       8,
+	`hardware OR patch applied')
+DEFINE_OPTION_KIND(ODK_GP_GROUP,   9,
+	`GP group to use for text/data sections')
+DEFINE_OPTION_KIND(ODK_IDENT,      10,
+	`ID information')
+DEFINE_OPTION_KIND(ODK_PAGESIZE,   11,
+	`page size information')
+')
+
+#
+# ODK_EXCEPTIONS info field masks.
+#
+define(`DEFINE_OPTION_EXCEPTIONS',`
+DEFINE_OPTION_EXCEPTION(OEX_FPU_MIN,    0x0000001FUL,
+	`minimum FPU exception which must be enabled')
+DEFINE_OPTION_EXCEPTION(OEX_FPU_MAX,    0x00001F00UL,
+	`maximum FPU exception which can be enabled')
+DEFINE_OPTION_EXCEPTION(OEX_PAGE0,      0x00010000UL,
+	`page zero must be mapped')
+DEFINE_OPTION_EXCEPTION(OEX_SMM,        0x00020000UL,
+	`run in sequential memory mode')
+DEFINE_OPTION_EXCEPTION(OEX_PRECISEFP,  0x00040000UL,
+	`run in precise FP exception mode')
+DEFINE_OPTION_EXCEPTION(OEX_DISMISS,    0x00080000UL,
+	`dismiss invalid address traps')
+')
+
+#
+# ODK_PAD info field masks.
+#
+define(`DEFINE_OPTION_PADS',`
+DEFINE_OPTION_PAD(OPAD_PREFIX,   0x0001)
+DEFINE_OPTION_PAD(OPAD_POSTFIX,  0x0002)
+DEFINE_OPTION_PAD(OPAD_SYMBOL,   0x0004)
+')
+
+#
+# ODK_HWPATCH info field masks and ODK_HWAND/ODK_HWOR
+# info field and hwp_flags[12] masks.
+#
+define(`DEFINE_ODK_HWPATCH_MASKS',`
+DEFINE_ODK_HWPATCH_MASK(OHW_R4KEOP,     0x00000001UL,
+	`patch for R4000 branch at end-of-page bug')
+DEFINE_ODK_HWPATCH_MASK(OHW_R8KPFETCH,  0x00000002UL,
+	`R8000 prefetch bug may occur')
+DEFINE_ODK_HWPATCH_MASK(OHW_R5KEOP,     0x00000004UL,
+	`patch for R5000 branch at end-of-page bug')
+DEFINE_ODK_HWPATCH_MASK(OHW_R5KCVTL,    0x00000008UL,
+	`R5000 cvt.[ds].l bug: clean == 1')
+DEFINE_ODK_HWPATCH_MASK(OHW_R10KLDL,    0x00000010UL,
+	`need patch for R10000 misaligned load')
+DEFINE_ODK_HWPATCH_MASK(OHWA0_R4KEOP_CHECKED, 0x00000001UL,
+	`object checked for R4000 end-of-page bug')
+DEFINE_ODK_HWPATCH_MASK(OHWA0_R4KEOP_CLEAN, 0x00000002UL,
+	`object verified clean for R4000 end-of-page bug')
+DEFINE_ODK_HWPATCH_MASK(OHWO0_FIXADE,   0x00000001UL,
+	`object requires call to fixade')
+')
+
+#
+# ODK_IDENT/ODK_GP_GROUP info field masks.
+#
+define(`DEFINE_ODK_GP_MASKS',`
+DEFINE_ODK_GP_MASK(OGP_GROUP,      0x0000FFFFUL,
+	`GP group number')
+DEFINE_ODK_GP_MASK(OGP_SELF,       0x00010000UL,
+	`GP group is self-contained')
+')
+
+# MIPS ABI related constants.
+define(`DEFINE_MIPS_ABIS',`
+DEFINE_MIPS_ABI(E_MIPS_ABI_O32,		0x00001000,
+	`MIPS 32 bit ABI (UCODE)')
+DEFINE_MIPS_ABI(E_MIPS_ABI_O64,		0x00002000,
+	`UCODE MIPS 64 bit ABI')
+DEFINE_MIPS_ABI(E_MIPS_ABI_EABI32,	0x00003000,
+	`Embedded ABI for 32-bit')
+DEFINE_MIPS_ABI(E_MIPS_ABI_EABI64,	0x00004000,
+	`Embedded ABI for 64-bit')
+')
Index: src/external/bsd/elftoolchain/dist/common/sys/elfdefinitions.m4
diff -u /dev/null src/external/bsd/elftoolchain/dist/common/sys/elfdefinitions.m4:1.1
--- /dev/null	Tue Apr  6 18:38:04 2021
+++ src/external/bsd/elftoolchain/dist/common/sys/elfdefinitions.m4	Tue Apr  6 18:38:04 2021
@@ -0,0 +1,759 @@
+/*-
+ * Copyright (c) 2010,2021 Joseph Koshy
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+divert(-1)
+define(`VCSID_ELFDEFINITIONS_M4',
+	`Id: elfdefinitions.m4 3939 2021-04-04 20:15:13Z jkoshy')
+include(`elfconstants.m4')dnl
+divert(0)dnl
+
+/*
+ * WARNING: GENERATED FILE.  DO NOT MODIFY.
+ *
+ *  GENERATED FROM: VCSID_ELFDEFINITIONS_M4
+ *  GENERATED FROM: VCSID_ELFCONSTANTS_M4
+ */
+divert(-1)
+# A convenience macro for the cases where we only need a simple
+# `#define SYMBOL VALUE' expansion.
+define(`SIMPLE_CPP_DEFINITION',
+	`define(DEFINE_$1,`#'define	$`'1	$`'2`')dnl')
+
+SIMPLE_CPP_DEFINITION(`CAPABILITY')
+SIMPLE_CPP_DEFINITION(`DYN_FLAG')
+SIMPLE_CPP_DEFINITION(`DYN_TYPE')
+SIMPLE_CPP_DEFINITION(`DYN_TYPE_ALIAS')
+SIMPLE_CPP_DEFINITION(`EHDR_FLAG')
+SIMPLE_CPP_DEFINITION(`EI_OFFSET')
+SIMPLE_CPP_DEFINITION(`ELF_CLASS')
+SIMPLE_CPP_DEFINITION(`ELF_DATA_ENDIANNESS')
+SIMPLE_CPP_DEFINITION(`ELF_MAGIC_VALUE')
+SIMPLE_CPP_DEFINITION(`ELF_OSABI')
+SIMPLE_CPP_DEFINITION(`ELF_OSABI_ALIAS')
+SIMPLE_CPP_DEFINITION(`ELF_MACHINE_TYPE')
+SIMPLE_CPP_DEFINITION(`ELF_MACHINE_TYPE_SYNONYM')
+SIMPLE_CPP_DEFINITION(`ELF_TYPE')
+SIMPLE_CPP_DEFINITION(`ELF_FILE_VERSION')
+SIMPLE_CPP_DEFINITION(`GRP_FLAG')
+SIMPLE_CPP_DEFINITION(`VERSYM')
+SIMPLE_CPP_DEFINITION(`PHDR_FLAG')
+SIMPLE_CPP_DEFINITION(`PHDR_TYPE')
+SIMPLE_CPP_DEFINITION(`PHDR_TYPE_SYNONYM')
+SIMPLE_CPP_DEFINITION(`SECTION_FLAG')
+SIMPLE_CPP_DEFINITION(`SECTION_INDEX')
+SIMPLE_CPP_DEFINITION(`SECTION_TYPE')
+SIMPLE_CPP_DEFINITION(`SECTION_TYPE_ALIAS')
+SIMPLE_CPP_DEFINITION(`SYMBOL_BINDING')
+SIMPLE_CPP_DEFINITION(`SYMBOL_TYPE')
+SIMPLE_CPP_DEFINITION(`SYMBOL_BINDING_KIND')
+SIMPLE_CPP_DEFINITION(`SYMBOL_VISIBILITY')
+SIMPLE_CPP_DEFINITION(`SYMBOL_FLAG')
+SIMPLE_CPP_DEFINITION(`VERSIONING_DEPENDENCY')
+SIMPLE_CPP_DEFINITION(`VERSIONING_FLAG')
+SIMPLE_CPP_DEFINITION(`VERSIONING_NEED')
+SIMPLE_CPP_DEFINITION(`VERSIONING_NUMBER')
+SIMPLE_CPP_DEFINITION(`RELOCATION')
+SIMPLE_CPP_DEFINITION(`LL_FLAG')
+SIMPLE_CPP_DEFINITION(`NOTE_ENTRY')
+SIMPLE_CPP_DEFINITION(`NOTE_ENTRY_ALIAS')
+SIMPLE_CPP_DEFINITION(`OPTION_KIND')
+SIMPLE_CPP_DEFINITION(`OPTION_EXCEPTION')
+SIMPLE_CPP_DEFINITION(`OPTION_PAD')
+SIMPLE_CPP_DEFINITION(`ODK_HWPATCH_MASK')
+SIMPLE_CPP_DEFINITION(`ODK_GP_MASK')
+SIMPLE_CPP_DEFINITION(`MIPS_ABI')
+divert(0)
+/*
+ * These definitions are based on:
+ * - The public specification of the ELF format as defined in the
+ *   October 2009 draft of System V ABI.
+ *   See: http://www.sco.com/developers/gabi/latest/ch4.intro.html
+ * - The May 1998 (version 1.5) draft of "The ELF-64 object format".
+ * - Processor-specific ELF ABI definitions for sparc, i386, amd64, mips,
+ *   ia64, powerpc, and RISC-V processors.
+ * - The "Linkers and Libraries Guide", from Sun Microsystems.
+ */
+
+#ifndef _SYS_ELFDEFINITIONS_H_
+#define _SYS_ELFDEFINITIONS_H_
+
+#include <stdint.h>
+
+/*
+ * Types of capabilities.
+ */
+DEFINE_CAPABILITIES()
+
+/*
+ * Flags used with dynamic linking entries.
+ */
+DEFINE_DYN_FLAGS()
+
+/*
+ * Dynamic linking entry types.
+ */
+DEFINE_DYN_TYPES()
+
+/* Aliases for dynamic linking entry symbols. */
+DEFINE_DYN_TYPE_ALIASES()
+
+/*
+ * Flags used in the executable header (field: e_flags).
+ */
+DEFINE_EHDR_FLAGS()
+
+/*
+ * Offsets in the `ei_ident[]' field of an ELF executable header.
+ */
+DEFINE_EI_OFFSETS()
+
+/*
+ * The ELF class of an object.
+ */
+DEFINE_ELF_CLASSES()
+
+/*
+ * Endianness of data in an ELF object.
+ */
+DEFINE_ELF_DATA_ENDIANNESSES()
+
+/*
+ * Values of the magic numbers used in identification array.
+ */
+DEFINE_ELF_MAGIC_VALUES()
+
+/*
+ * ELF OS ABI field.
+ */
+DEFINE_ELF_OSABIS()
+
+/* OS ABI Aliases. */
+DEFINE_ELF_OSABI_ALIASES()
+
+/*
+ * ELF Machine types: (EM_*).
+ */
+DEFINE_ELF_MACHINE_TYPES()
+/* Other synonyms. */
+DEFINE_ELF_MACHINE_TYPE_SYNONYMS()
+
+/*
+ * ELF file types: (ET_*).
+ */
+DEFINE_ELF_TYPES()
+
+/* ELF file format version numbers. */
+DEFINE_ELF_FILE_VERSIONS()
+
+/*
+ * Flags for section groups.
+ */
+DEFINE_GRP_FLAGS()
+
+/*
+ * Flags / mask for .gnu.versym sections.
+ */
+DEFINE_VERSYMS()
+
+/*
+ * Flags used by program header table entries.
+ */
+DEFINE_PHDR_FLAGS()
+
+/*
+ * Types of program header table entries.
+ */
+DEFINE_PHDR_TYPES()
+/* synonyms. */
+DEFINE_PHDR_TYPE_SYNONYMS()
+
+/*
+ * Section flags.
+ */
+DEFINE_SECTION_FLAGS()
+
+/*
+ * Special section indices.
+ */
+DEFINE_SECTION_INDICES()
+
+/*
+ * Section types.
+ */
+DEFINE_SECTION_TYPES()
+/* Aliases for section types. */
+DEFINE_SECTION_TYPE_ALIASES()
+
+#define	PN_XNUM			0xFFFFU /* Use extended section numbering. */
+
+/*
+ * Symbol binding information.
+ */
+DEFINE_SYMBOL_BINDINGS()
+
+/*
+ * Symbol types
+ */
+DEFINE_SYMBOL_TYPES()
+
+/*
+ * Symbol binding.
+ */
+DEFINE_SYMBOL_BINDING_KINDS()
+
+/*
+ * Symbol visibility.
+ */
+DEFINE_SYMBOL_VISIBILITIES()
+
+/*
+ * Symbol flags.
+ */
+DEFINE_SYMBOL_FLAGS()
+
+/*
+ * Versioning dependencies.
+ */
+DEFINE_VERSIONING_DEPENDENCIES()
+
+/*
+ * Versioning flags.
+ */
+DEFINE_VERSIONING_FLAGS()
+
+/*
+ * Versioning needs
+ */
+DEFINE_VERSIONING_NEEDS()
+
+/*
+ * Versioning numbers.
+ */
+DEFINE_VERSIONING_NUMBERS()
+
+/**
+ ** Relocation types.
+ **/
+DEFINE_RELOCATIONS()
+
+/*
+ * MIPS ABI related.
+ */
+DEFINE_MIPS_ABIS()
+
+/**
+ ** ELF Types.
+ **/
+
+typedef uint32_t	Elf32_Addr;	/* Program address. */
+typedef uint8_t		Elf32_Byte;	/* Unsigned tiny integer. */
+typedef uint16_t	Elf32_Half;	/* Unsigned medium integer. */
+typedef uint32_t	Elf32_Off;	/* File offset. */
+typedef uint16_t	Elf32_Section;	/* Section index. */
+typedef int32_t		Elf32_Sword;	/* Signed integer. */
+typedef uint32_t	Elf32_Word;	/* Unsigned integer. */
+typedef uint64_t	Elf32_Lword;	/* Unsigned long integer. */
+
+typedef uint64_t	Elf64_Addr;	/* Program address. */
+typedef uint8_t		Elf64_Byte;	/* Unsigned tiny integer. */
+typedef uint16_t	Elf64_Half;	/* Unsigned medium integer. */
+typedef uint64_t	Elf64_Off;	/* File offset. */
+typedef uint16_t	Elf64_Section;	/* Section index. */
+typedef int32_t		Elf64_Sword;	/* Signed integer. */
+typedef uint32_t	Elf64_Word;	/* Unsigned integer. */
+typedef uint64_t	Elf64_Lword;	/* Unsigned long integer. */
+typedef uint64_t	Elf64_Xword;	/* Unsigned long integer. */
+typedef int64_t		Elf64_Sxword;	/* Signed long integer. */
+
+
+/*
+ * Capability descriptors.
+ */
+
+/* 32-bit capability descriptor. */
+typedef struct {
+	Elf32_Word	c_tag;	     /* Type of entry. */
+	union {
+		Elf32_Word	c_val; /* Integer value. */
+		Elf32_Addr	c_ptr; /* Pointer value. */
+	} c_un;
+} Elf32_Cap;
+
+/* 64-bit capability descriptor. */
+typedef struct {
+	Elf64_Xword	c_tag;	     /* Type of entry. */
+	union {
+		Elf64_Xword	c_val; /* Integer value. */
+		Elf64_Addr	c_ptr; /* Pointer value. */
+	} c_un;
+} Elf64_Cap;
+
+/*
+ * MIPS .conflict section entries.
+ */
+
+/* 32-bit entry. */
+typedef struct {
+	Elf32_Addr	c_index;
+} Elf32_Conflict;
+
+/* 64-bit entry. */
+typedef struct {
+	Elf64_Addr	c_index;
+} Elf64_Conflict;
+
+/*
+ * Dynamic section entries.
+ */
+
+/* 32-bit entry. */
+typedef struct {
+	Elf32_Sword	d_tag;	     /* Type of entry. */
+	union {
+		Elf32_Word	d_val; /* Integer value. */
+		Elf32_Addr	d_ptr; /* Pointer value. */
+	} d_un;
+} Elf32_Dyn;
+
+/* 64-bit entry. */
+typedef struct {
+	Elf64_Sxword	d_tag;	     /* Type of entry. */
+	union {
+		Elf64_Xword	d_val; /* Integer value. */
+		Elf64_Addr	d_ptr; /* Pointer value; */
+	} d_un;
+} Elf64_Dyn;
+
+
+/*
+ * The executable header (EHDR).
+ */
+
+/* 32 bit EHDR. */
+typedef struct {
+	unsigned char   e_ident[EI_NIDENT]; /* ELF identification. */
+	Elf32_Half      e_type;	     /* Object file type (ET_*). */
+	Elf32_Half      e_machine;   /* Machine type (EM_*). */
+	Elf32_Word      e_version;   /* File format version (EV_*). */
+	Elf32_Addr      e_entry;     /* Start address. */
+	Elf32_Off       e_phoff;     /* File offset to the PHDR table. */
+	Elf32_Off       e_shoff;     /* File offset to the SHDRheader. */
+	Elf32_Word      e_flags;     /* Flags (EF_*). */
+	Elf32_Half      e_ehsize;    /* Elf header size in bytes. */
+	Elf32_Half      e_phentsize; /* PHDR table entry size in bytes. */
+	Elf32_Half      e_phnum;     /* Number of PHDR entries. */
+	Elf32_Half      e_shentsize; /* SHDR table entry size in bytes. */
+	Elf32_Half      e_shnum;     /* Number of SHDR entries. */
+	Elf32_Half      e_shstrndx;  /* Index of section name string table. */
+} Elf32_Ehdr;
+
+
+/* 64 bit EHDR. */
+typedef struct {
+	unsigned char   e_ident[EI_NIDENT]; /* ELF identification. */
+	Elf64_Half      e_type;	     /* Object file type (ET_*). */
+	Elf64_Half      e_machine;   /* Machine type (EM_*). */
+	Elf64_Word      e_version;   /* File format version (EV_*). */
+	Elf64_Addr      e_entry;     /* Start address. */
+	Elf64_Off       e_phoff;     /* File offset to the PHDR table. */
+	Elf64_Off       e_shoff;     /* File offset to the SHDRheader. */
+	Elf64_Word      e_flags;     /* Flags (EF_*). */
+	Elf64_Half      e_ehsize;    /* Elf header size in bytes. */
+	Elf64_Half      e_phentsize; /* PHDR table entry size in bytes. */
+	Elf64_Half      e_phnum;     /* Number of PHDR entries. */
+	Elf64_Half      e_shentsize; /* SHDR table entry size in bytes. */
+	Elf64_Half      e_shnum;     /* Number of SHDR entries. */
+	Elf64_Half      e_shstrndx;  /* Index of section name string table. */
+} Elf64_Ehdr;
+
+
+/*
+ * Shared object information.
+ */
+
+/* 32-bit entry. */
+typedef struct {
+	Elf32_Word l_name;	     /* The name of a shared object. */
+	Elf32_Word l_time_stamp;     /* 32-bit timestamp. */
+	Elf32_Word l_checksum;	     /* Checksum of visible symbols, sizes. */
+	Elf32_Word l_version;	     /* Interface version string index. */
+	Elf32_Word l_flags;	     /* Flags (LL_*). */
+} Elf32_Lib;
+
+/* 64-bit entry. */
+typedef struct {
+	Elf64_Word l_name;	     /* The name of a shared object. */
+	Elf64_Word l_time_stamp;     /* 32-bit timestamp. */
+	Elf64_Word l_checksum;	     /* Checksum of visible symbols, sizes. */
+	Elf64_Word l_version;	     /* Interface version string index. */
+	Elf64_Word l_flags;	     /* Flags (LL_*). */
+} Elf64_Lib;
+
+DEFINE_LL_FLAGS()
+
+/*
+ * Note tags
+ */
+DEFINE_NOTE_ENTRY_TYPES()
+/* Aliases for the ABI tag. */
+DEFINE_NOTE_ENTRY_ALIASES()
+
+/*
+ * Note descriptors.
+ */
+
+typedef	struct {
+	uint32_t	n_namesz;    /* Length of note's name. */
+	uint32_t	n_descsz;    /* Length of note's value. */
+	uint32_t	n_type;	     /* Type of note. */
+} Elf_Note;
+
+typedef Elf_Note Elf32_Nhdr;	     /* 32-bit note header. */
+typedef Elf_Note Elf64_Nhdr;	     /* 64-bit note header. */
+
+/*
+ * MIPS ELF options descriptor header.
+ */
+
+typedef struct {
+	Elf64_Byte	kind;        /* Type of options. */
+	Elf64_Byte     	size;	     /* Size of option descriptor. */
+	Elf64_Half	section;     /* Index of section affected. */
+	Elf64_Word	info;        /* Kind-specific information. */
+} Elf_Options;
+
+/*
+ * Option kinds.
+ */
+DEFINE_OPTION_KINDS()
+
+/*
+ * ODK_EXCEPTIONS info field masks.
+ */
+DEFINE_OPTION_EXCEPTIONS()
+
+/*
+ * ODK_PAD info field masks.
+ */
+DEFINE_OPTION_PADS()
+
+/*
+ * ODK_HWPATCH info field masks and ODK_HWAND/ODK_HWOR info field
+ * and hwp_flags[12] masks.
+ */
+DEFINE_ODK_HWPATCH_MASKS()
+
+/*
+ * ODK_IDENT/ODK_GP_GROUP info field masks.
+ */
+DEFINE_ODK_GP_MASKS()
+
+/*
+ * MIPS ELF register info descriptor.
+ */
+
+/* 32 bit RegInfo entry. */
+typedef struct {
+	Elf32_Word	ri_gprmask;  /* Mask of general register used. */
+	Elf32_Word	ri_cprmask[4]; /* Mask of coprocessor register used. */
+	Elf32_Addr	ri_gp_value; /* GP register value. */
+} Elf32_RegInfo;
+
+/* 64 bit RegInfo entry. */
+typedef struct {
+	Elf64_Word	ri_gprmask;  /* Mask of general register used. */
+	Elf64_Word	ri_pad;	     /* Padding. */
+	Elf64_Word	ri_cprmask[4]; /* Mask of coprocessor register used. */
+	Elf64_Addr	ri_gp_value; /* GP register value. */
+} Elf64_RegInfo;
+
+/*
+ * Program Header Table (PHDR) entries.
+ */
+
+/* 32 bit PHDR entry. */
+typedef struct {
+	Elf32_Word	p_type;	     /* Type of segment. */
+	Elf32_Off	p_offset;    /* File offset to segment. */
+	Elf32_Addr	p_vaddr;     /* Virtual address in memory. */
+	Elf32_Addr	p_paddr;     /* Physical address (if relevant). */
+	Elf32_Word	p_filesz;    /* Size of segment in file. */
+	Elf32_Word	p_memsz;     /* Size of segment in memory. */
+	Elf32_Word	p_flags;     /* Segment flags. */
+	Elf32_Word	p_align;     /* Alignment constraints. */
+} Elf32_Phdr;
+
+/* 64 bit PHDR entry. */
+typedef struct {
+	Elf64_Word	p_type;	     /* Type of segment. */
+	Elf64_Word	p_flags;     /* Segment flags. */
+	Elf64_Off	p_offset;    /* File offset to segment. */
+	Elf64_Addr	p_vaddr;     /* Virtual address in memory. */
+	Elf64_Addr	p_paddr;     /* Physical address (if relevant). */
+	Elf64_Xword	p_filesz;    /* Size of segment in file. */
+	Elf64_Xword	p_memsz;     /* Size of segment in memory. */
+	Elf64_Xword	p_align;     /* Alignment constraints. */
+} Elf64_Phdr;
+
+
+/*
+ * Move entries, for describing data in COMMON blocks in a compact
+ * manner.
+ */
+
+/* 32-bit move entry. */
+typedef struct {
+	Elf32_Lword	m_value;     /* Initialization value. */
+	Elf32_Word 	m_info;	     /* Encoded size and index. */
+	Elf32_Word	m_poffset;   /* Offset relative to symbol. */
+	Elf32_Half	m_repeat;    /* Repeat count. */
+	Elf32_Half	m_stride;    /* Number of units to skip. */
+} Elf32_Move;
+
+/* 64-bit move entry. */
+typedef struct {
+	Elf64_Lword	m_value;     /* Initialization value. */
+	Elf64_Xword 	m_info;	     /* Encoded size and index. */
+	Elf64_Xword	m_poffset;   /* Offset relative to symbol. */
+	Elf64_Half	m_repeat;    /* Repeat count. */
+	Elf64_Half	m_stride;    /* Number of units to skip. */
+} Elf64_Move;
+
+#define ELF32_M_SYM(I)		((I) >> 8)
+#define ELF32_M_SIZE(I)		((unsigned char) (I))
+#define ELF32_M_INFO(M, S)	(((M) << 8) + (unsigned char) (S))
+
+#define ELF64_M_SYM(I)		((I) >> 8)
+#define ELF64_M_SIZE(I)		((unsigned char) (I))
+#define ELF64_M_INFO(M, S)	(((M) << 8) + (unsigned char) (S))
+
+/*
+ * Section Header Table (SHDR) entries.
+ */
+
+/* 32 bit SHDR */
+typedef struct {
+	Elf32_Word	sh_name;     /* index of section name */
+	Elf32_Word	sh_type;     /* section type */
+	Elf32_Word	sh_flags;    /* section flags */
+	Elf32_Addr	sh_addr;     /* in-memory address of section */
+	Elf32_Off	sh_offset;   /* file offset of section */
+	Elf32_Word	sh_size;     /* section size in bytes */
+	Elf32_Word	sh_link;     /* section header table link */
+	Elf32_Word	sh_info;     /* extra information */
+	Elf32_Word	sh_addralign; /* alignment constraint */
+	Elf32_Word	sh_entsize;   /* size for fixed-size entries */
+} Elf32_Shdr;
+
+/* 64 bit SHDR */
+typedef struct {
+	Elf64_Word	sh_name;     /* index of section name */
+	Elf64_Word	sh_type;     /* section type */
+	Elf64_Xword	sh_flags;    /* section flags */
+	Elf64_Addr	sh_addr;     /* in-memory address of section */
+	Elf64_Off	sh_offset;   /* file offset of section */
+	Elf64_Xword	sh_size;     /* section size in bytes */
+	Elf64_Word	sh_link;     /* section header table link */
+	Elf64_Word	sh_info;     /* extra information */
+	Elf64_Xword	sh_addralign; /* alignment constraint */
+	Elf64_Xword	sh_entsize;  /* size for fixed-size entries */
+} Elf64_Shdr;
+
+
+/*
+ * Symbol table entries.
+ */
+
+typedef struct {
+	Elf32_Word	st_name;     /* index of symbol's name */
+	Elf32_Addr	st_value;    /* value for the symbol */
+	Elf32_Word	st_size;     /* size of associated data */
+	unsigned char	st_info;     /* type and binding attributes */
+	unsigned char	st_other;    /* visibility */
+	Elf32_Half	st_shndx;    /* index of related section */
+} Elf32_Sym;
+
+typedef struct {
+	Elf64_Word	st_name;     /* index of symbol's name */
+	unsigned char	st_info;     /* type and binding attributes */
+	unsigned char	st_other;    /* visibility */
+	Elf64_Half	st_shndx;    /* index of related section */
+	Elf64_Addr	st_value;    /* value for the symbol */
+	Elf64_Xword	st_size;     /* size of associated data */
+} Elf64_Sym;
+
+#define ELF32_ST_BIND(I)	((I) >> 4)
+#define ELF32_ST_TYPE(I)	((I) & 0xFU)
+#define ELF32_ST_INFO(B,T)	(((B) << 4) + ((T) & 0xF))
+
+#define ELF64_ST_BIND(I)	((I) >> 4)
+#define ELF64_ST_TYPE(I)	((I) & 0xFU)
+#define ELF64_ST_INFO(B,T)	(((B) << 4) + ((T) & 0xF))
+
+#define ELF32_ST_VISIBILITY(O)	((O) & 0x3)
+#define ELF64_ST_VISIBILITY(O)	((O) & 0x3)
+
+/*
+ * Syminfo descriptors, containing additional symbol information.
+ */
+
+/* 32-bit entry. */
+typedef struct {
+	Elf32_Half	si_boundto;  /* Entry index with additional flags. */
+	Elf32_Half	si_flags;    /* Flags. */
+} Elf32_Syminfo;
+
+/* 64-bit entry. */
+typedef struct {
+	Elf64_Half	si_boundto;  /* Entry index with additional flags. */
+	Elf64_Half	si_flags;    /* Flags. */
+} Elf64_Syminfo;
+
+/*
+ * Relocation descriptors.
+ */
+
+typedef struct {
+	Elf32_Addr	r_offset;    /* location to apply relocation to */
+	Elf32_Word	r_info;	     /* type+section for relocation */
+} Elf32_Rel;
+
+typedef struct {
+	Elf32_Addr	r_offset;    /* location to apply relocation to */
+	Elf32_Word	r_info;      /* type+section for relocation */
+	Elf32_Sword	r_addend;    /* constant addend */
+} Elf32_Rela;
+
+typedef struct {
+	Elf64_Addr	r_offset;    /* location to apply relocation to */
+	Elf64_Xword	r_info;      /* type+section for relocation */
+} Elf64_Rel;
+
+typedef struct {
+	Elf64_Addr	r_offset;    /* location to apply relocation to */
+	Elf64_Xword	r_info;      /* type+section for relocation */
+	Elf64_Sxword	r_addend;    /* constant addend */
+} Elf64_Rela;
+
+
+#define ELF32_R_SYM(I)		((I) >> 8)
+#define ELF32_R_TYPE(I)		((unsigned char) (I))
+#define ELF32_R_INFO(S,T)	(((S) << 8) + (unsigned char) (T))
+
+#define ELF64_R_SYM(I)		((I) >> 32)
+#define ELF64_R_TYPE(I)		((I) & 0xFFFFFFFFUL)
+#define ELF64_R_INFO(S,T)	\
+	(((Elf64_Xword) (S) << 32) + ((T) & 0xFFFFFFFFUL))
+
+/*
+ * Symbol versioning structures.
+ */
+
+/* 32-bit structures. */
+typedef struct
+{
+	Elf32_Word	vda_name;    /* Index to name. */
+	Elf32_Word	vda_next;    /* Offset to next entry. */
+} Elf32_Verdaux;
+
+typedef struct
+{
+	Elf32_Word	vna_hash;    /* Hash value of dependency name. */
+	Elf32_Half	vna_flags;   /* Flags. */
+	Elf32_Half	vna_other;   /* Unused. */
+	Elf32_Word	vna_name;    /* Offset to dependency name. */
+	Elf32_Word	vna_next;    /* Offset to next vernaux entry. */
+} Elf32_Vernaux;
+
+typedef struct
+{
+	Elf32_Half	vd_version;  /* Version information. */
+	Elf32_Half	vd_flags;    /* Flags. */
+	Elf32_Half	vd_ndx;	     /* Index into the versym section. */
+	Elf32_Half	vd_cnt;	     /* Number of aux entries. */
+	Elf32_Word	vd_hash;     /* Hash value of name. */
+	Elf32_Word	vd_aux;	     /* Offset to aux entries. */
+	Elf32_Word	vd_next;     /* Offset to next version definition. */
+} Elf32_Verdef;
+
+typedef struct
+{
+	Elf32_Half	vn_version;  /* Version number. */
+	Elf32_Half	vn_cnt;	     /* Number of aux entries. */
+	Elf32_Word	vn_file;     /* Offset of associated file name. */
+	Elf32_Word	vn_aux;	     /* Offset of vernaux array. */
+	Elf32_Word	vn_next;     /* Offset of next verneed entry. */
+} Elf32_Verneed;
+
+typedef Elf32_Half	Elf32_Versym;
+
+/* 64-bit structures. */
+
+typedef struct {
+	Elf64_Word	vda_name;    /* Index to name. */
+	Elf64_Word	vda_next;    /* Offset to next entry. */
+} Elf64_Verdaux;
+
+typedef struct {
+	Elf64_Word	vna_hash;    /* Hash value of dependency name. */
+	Elf64_Half	vna_flags;   /* Flags. */
+	Elf64_Half	vna_other;   /* Unused. */
+	Elf64_Word	vna_name;    /* Offset to dependency name. */
+	Elf64_Word	vna_next;    /* Offset to next vernaux entry. */
+} Elf64_Vernaux;
+
+typedef struct {
+	Elf64_Half	vd_version;  /* Version information. */
+	Elf64_Half	vd_flags;    /* Flags. */
+	Elf64_Half	vd_ndx;	     /* Index into the versym section. */
+	Elf64_Half	vd_cnt;	     /* Number of aux entries. */
+	Elf64_Word	vd_hash;     /* Hash value of name. */
+	Elf64_Word	vd_aux;	     /* Offset to aux entries. */
+	Elf64_Word	vd_next;     /* Offset to next version definition. */
+} Elf64_Verdef;
+
+typedef struct {
+	Elf64_Half	vn_version;  /* Version number. */
+	Elf64_Half	vn_cnt;	     /* Number of aux entries. */
+	Elf64_Word	vn_file;     /* Offset of associated file name. */
+	Elf64_Word	vn_aux;	     /* Offset of vernaux array. */
+	Elf64_Word	vn_next;     /* Offset of next verneed entry. */
+} Elf64_Verneed;
+
+typedef Elf64_Half	Elf64_Versym;
+
+
+/*
+ * The header for GNU-style hash sections.
+ */
+
+typedef struct {
+	uint32_t	gh_nbuckets;	/* Number of hash buckets. */
+	uint32_t	gh_symndx;	/* First visible symbol in .dynsym. */
+	uint32_t	gh_maskwords;	/* #maskwords used in bloom filter. */
+	uint32_t	gh_shift2;	/* Bloom filter shift count. */
+} Elf_GNU_Hash_Header;
+
+#endif	/* _SYS_ELFDEFINITIONS_H_ */

Reply via email to