xref: /onnv-gate/usr/src/cmd/sgs/elfedit/common/elfconst.c (revision 5565:538e7adac11a)
15088Sab196087 /*
25088Sab196087  * CDDL HEADER START
35088Sab196087  *
45088Sab196087  * The contents of this file are subject to the terms of the
55088Sab196087  * Common Development and Distribution License (the "License").
65088Sab196087  * You may not use this file except in compliance with the License.
75088Sab196087  *
85088Sab196087  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
95088Sab196087  * or http://www.opensolaris.org/os/licensing.
105088Sab196087  * See the License for the specific language governing permissions
115088Sab196087  * and limitations under the License.
125088Sab196087  *
135088Sab196087  * When distributing Covered Code, include this CDDL HEADER in each
145088Sab196087  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
155088Sab196087  * If applicable, add the following below this CDDL HEADER, with the
165088Sab196087  * fields enclosed by brackets "[]" replaced with your own identifying
175088Sab196087  * information: Portions Copyright [yyyy] [name of copyright owner]
185088Sab196087  *
195088Sab196087  * CDDL HEADER END
205088Sab196087  */
215088Sab196087 
225088Sab196087 /*
235088Sab196087  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
245088Sab196087  * Use is subject to license terms.
255088Sab196087  */
265088Sab196087 #pragma ident	"%Z%%M%	%I%	%E% SMI"
275088Sab196087 
285088Sab196087 #include	<stdlib.h>
295088Sab196087 #include	<stdio.h>
305088Sab196087 #include	<unistd.h>
315088Sab196087 #include	<libintl.h>
325088Sab196087 #include	<libelf.h>
335088Sab196087 #include	<sys/machelf.h>
345088Sab196087 #include	<link.h>
355088Sab196087 #include	<strings.h>
365088Sab196087 #include	<ctype.h>
375088Sab196087 #include	<elfedit.h>
385088Sab196087 #include	<_elfedit.h>
395088Sab196087 #include	<sys/elf_SPARC.h>
405088Sab196087 #include	<sys/elf_amd64.h>
415088Sab196087 #include	<sys/auxv_386.h>
425088Sab196087 #include	<sys/auxv_SPARC.h>
435088Sab196087 #include	<msg.h>
44*5565Sab196087 #include	<elfcap.h>
455088Sab196087 
465088Sab196087 
475088Sab196087 
485088Sab196087 /*
495088Sab196087  * This file contains support for mapping well known ELF constants
505088Sab196087  * to their numeric values. It is a layer on top of the elfedit_atoui()
515088Sab196087  * routines defined in util.c. The idea is that centralizing all the
525088Sab196087  * support for such constants will improve consistency between modules,
535088Sab196087  * allow for sharing of commonly needed items, and make the modules
545088Sab196087  * simpler.
555088Sab196087  */
565088Sab196087 
575088Sab196087 
585088Sab196087 
595088Sab196087 
605088Sab196087 /*
615088Sab196087  * elfedit output style, with and without leading -o
625088Sab196087  */
635088Sab196087 static elfedit_atoui_sym_t sym_outstyle[] = {
645088Sab196087 	{ MSG_ORIG(MSG_STR_DEFAULT),		ELFEDIT_OUTSTYLE_DEFAULT },
655088Sab196087 	{ MSG_ORIG(MSG_STR_SIMPLE),		ELFEDIT_OUTSTYLE_SIMPLE },
665088Sab196087 	{ MSG_ORIG(MSG_STR_NUM),		ELFEDIT_OUTSTYLE_NUM },
675088Sab196087 	{ NULL }
685088Sab196087 };
695088Sab196087 static elfedit_atoui_sym_t sym_minus_o_outstyle[] = {
705088Sab196087 	{ MSG_ORIG(MSG_STR_MINUS_O_DEFAULT),	ELFEDIT_OUTSTYLE_DEFAULT },
715088Sab196087 	{ MSG_ORIG(MSG_STR_MINUS_O_SIMPLE),	ELFEDIT_OUTSTYLE_SIMPLE },
725088Sab196087 	{ MSG_ORIG(MSG_STR_MINUS_O_NUM),	ELFEDIT_OUTSTYLE_NUM },
735088Sab196087 	{ NULL }
745088Sab196087 };
755088Sab196087 
765088Sab196087 
775088Sab196087 /*
785088Sab196087  * Booleans
795088Sab196087  */
805088Sab196087 static elfedit_atoui_sym_t sym_bool[] = {
815088Sab196087 	{ MSG_ORIG(MSG_STR_T),			1 },
825088Sab196087 	{ MSG_ORIG(MSG_STR_F),			0 },
835088Sab196087 	{ MSG_ORIG(MSG_STR_TRUE),		1 },
845088Sab196087 	{ MSG_ORIG(MSG_STR_FALSE),		0 },
855088Sab196087 	{ MSG_ORIG(MSG_STR_ON),			1 },
865088Sab196087 	{ MSG_ORIG(MSG_STR_OFF),		0 },
875088Sab196087 	{ MSG_ORIG(MSG_STR_YES),		1 },
885088Sab196087 	{ MSG_ORIG(MSG_STR_NO),			0 },
895088Sab196087 	{ MSG_ORIG(MSG_STR_Y),			1 },
905088Sab196087 	{ MSG_ORIG(MSG_STR_N),			0 },
915088Sab196087 	{ NULL }
925088Sab196087 };
935088Sab196087 
945088Sab196087 /*
955088Sab196087  * ELF section indexes with support for the special index names.
965088Sab196087  */
975088Sab196087 static elfedit_atoui_sym_t sym_shn[] = {
985088Sab196087 	{ MSG_ORIG(MSG_SHN_UNDEF),		SHN_UNDEF },
995088Sab196087 	{ MSG_ORIG(MSG_SHN_UNDEF_ALT1),		SHN_UNDEF },
1005088Sab196087 
1015088Sab196087 	{ MSG_ORIG(MSG_SHN_SUNW_IGNORE),	SHN_SUNW_IGNORE },
1025088Sab196087 	{ MSG_ORIG(MSG_SHN_SUNW_IGNORE_ALT1),	SHN_SUNW_IGNORE },
1035088Sab196087 
1045088Sab196087 	{ MSG_ORIG(MSG_SHN_BEFORE),		SHN_BEFORE },
1055088Sab196087 	{ MSG_ORIG(MSG_SHN_BEFORE_ALT1),	SHN_BEFORE },
1065088Sab196087 
1075088Sab196087 	{ MSG_ORIG(MSG_SHN_AFTER),		SHN_AFTER },
1085088Sab196087 	{ MSG_ORIG(MSG_SHN_AFTER_ALT1), 	SHN_AFTER },
1095088Sab196087 
1105088Sab196087 	{ MSG_ORIG(MSG_SHN_AMD64_LCOMMON), 	SHN_AMD64_LCOMMON },
1115088Sab196087 	{ MSG_ORIG(MSG_SHN_AMD64_LCOMMON_ALT1),	SHN_AMD64_LCOMMON },
1125088Sab196087 
1135088Sab196087 	{ MSG_ORIG(MSG_SHN_ABS),		SHN_ABS },
1145088Sab196087 	{ MSG_ORIG(MSG_SHN_ABS_ALT1),		SHN_ABS },
1155088Sab196087 
1165088Sab196087 	{ MSG_ORIG(MSG_SHN_COMMON),		SHN_COMMON },
1175088Sab196087 	{ MSG_ORIG(MSG_SHN_COMMON_ALT1),	SHN_COMMON },
1185088Sab196087 
1195088Sab196087 	{ MSG_ORIG(MSG_SHN_XINDEX),		SHN_XINDEX },
1205088Sab196087 	{ MSG_ORIG(MSG_SHN_XINDEX_ALT1),	SHN_XINDEX },
1215088Sab196087 
1225088Sab196087 	{ NULL }
1235088Sab196087 };
1245088Sab196087 
1255088Sab196087 /*
1265088Sab196087  * ELF section types.
1275088Sab196087  */
1285088Sab196087 static elfedit_atoui_sym_t sym_sht[] = {
1295088Sab196087 	{ MSG_ORIG(MSG_SHT_NULL),		SHT_NULL },
1305088Sab196087 	{ MSG_ORIG(MSG_SHT_NULL_ALT1),		SHT_NULL },
1315088Sab196087 
1325088Sab196087 	{ MSG_ORIG(MSG_SHT_PROGBITS),		SHT_PROGBITS },
1335088Sab196087 	{ MSG_ORIG(MSG_SHT_PROGBITS_ALT1),	SHT_PROGBITS },
1345088Sab196087 
1355088Sab196087 	{ MSG_ORIG(MSG_SHT_SYMTAB),		SHT_SYMTAB },
1365088Sab196087 	{ MSG_ORIG(MSG_SHT_SYMTAB_ALT1),	SHT_SYMTAB },
1375088Sab196087 
1385088Sab196087 	{ MSG_ORIG(MSG_SHT_STRTAB),		SHT_STRTAB },
1395088Sab196087 	{ MSG_ORIG(MSG_SHT_STRTAB_ALT1),	SHT_STRTAB },
1405088Sab196087 
1415088Sab196087 	{ MSG_ORIG(MSG_SHT_RELA),		SHT_RELA },
1425088Sab196087 	{ MSG_ORIG(MSG_SHT_RELA_ALT1),		SHT_RELA },
1435088Sab196087 
1445088Sab196087 	{ MSG_ORIG(MSG_SHT_HASH),		SHT_HASH },
1455088Sab196087 	{ MSG_ORIG(MSG_SHT_HASH_ALT1),		SHT_HASH },
1465088Sab196087 
1475088Sab196087 	{ MSG_ORIG(MSG_SHT_DYNAMIC),		SHT_DYNAMIC },
1485088Sab196087 	{ MSG_ORIG(MSG_SHT_DYNAMIC_ALT1),	SHT_DYNAMIC },
1495088Sab196087 
1505088Sab196087 	{ MSG_ORIG(MSG_SHT_NOTE),		SHT_NOTE },
1515088Sab196087 	{ MSG_ORIG(MSG_SHT_NOTE_ALT1),		SHT_NOTE },
1525088Sab196087 
1535088Sab196087 	{ MSG_ORIG(MSG_SHT_NOBITS),		SHT_NOBITS },
1545088Sab196087 	{ MSG_ORIG(MSG_SHT_NOBITS_ALT1),	SHT_NOBITS },
1555088Sab196087 
1565088Sab196087 	{ MSG_ORIG(MSG_SHT_REL),		SHT_REL },
1575088Sab196087 	{ MSG_ORIG(MSG_SHT_REL_ALT1),		SHT_REL },
1585088Sab196087 
1595088Sab196087 	{ MSG_ORIG(MSG_SHT_SHLIB),		SHT_SHLIB },
1605088Sab196087 	{ MSG_ORIG(MSG_SHT_SHLIB_ALT1),		SHT_SHLIB },
1615088Sab196087 
1625088Sab196087 	{ MSG_ORIG(MSG_SHT_DYNSYM),		SHT_DYNSYM },
1635088Sab196087 	{ MSG_ORIG(MSG_SHT_DYNSYM_ALT1),	SHT_DYNSYM },
1645088Sab196087 
1655088Sab196087 	{ MSG_ORIG(MSG_SHT_INIT_ARRAY),		SHT_INIT_ARRAY },
1665088Sab196087 	{ MSG_ORIG(MSG_SHT_INIT_ARRAY_ALT1),	SHT_INIT_ARRAY },
1675088Sab196087 
1685088Sab196087 	{ MSG_ORIG(MSG_SHT_FINI_ARRAY),		SHT_FINI_ARRAY },
1695088Sab196087 	{ MSG_ORIG(MSG_SHT_FINI_ARRAY_ALT1),	SHT_FINI_ARRAY },
1705088Sab196087 
1715088Sab196087 	{ MSG_ORIG(MSG_SHT_PREINIT_ARRAY),	SHT_PREINIT_ARRAY },
1725088Sab196087 	{ MSG_ORIG(MSG_SHT_PREINIT_ARRAY_ALT1),	SHT_PREINIT_ARRAY },
1735088Sab196087 
1745088Sab196087 	{ MSG_ORIG(MSG_SHT_GROUP),		SHT_GROUP },
1755088Sab196087 	{ MSG_ORIG(MSG_SHT_GROUP_ALT1),		SHT_GROUP },
1765088Sab196087 
1775088Sab196087 	{ MSG_ORIG(MSG_SHT_SYMTAB_SHNDX),	SHT_SYMTAB_SHNDX },
1785088Sab196087 	{ MSG_ORIG(MSG_SHT_SYMTAB_SHNDX_ALT1),	SHT_SYMTAB_SHNDX },
1795088Sab196087 
1805088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_SYMSORT),	SHT_SUNW_symsort },
1815088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_SYMSORT_ALT1),	SHT_SUNW_symsort },
1825088Sab196087 
1835088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_TLSSORT),	SHT_SUNW_tlssort },
1845088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_TLSSORT_ALT1),	SHT_SUNW_tlssort },
1855088Sab196087 
1865088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_LDYNSYM),	SHT_SUNW_LDYNSYM },
1875088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_LDYNSYM_ALT1),	SHT_SUNW_LDYNSYM },
1885088Sab196087 
1895088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_DOF),		SHT_SUNW_dof },
1905088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_DOF_ALT1),	SHT_SUNW_dof },
1915088Sab196087 
1925088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_CAP),		SHT_SUNW_cap },
1935088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_CAP_ALT1),	SHT_SUNW_cap },
1945088Sab196087 
1955088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_SIGNATURE),	SHT_SUNW_SIGNATURE },
1965088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_SIGNATURE_ALT1), SHT_SUNW_SIGNATURE },
1975088Sab196087 
1985088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_ANNOTATE),	SHT_SUNW_ANNOTATE },
1995088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_ANNOTATE_ALT1),	SHT_SUNW_ANNOTATE },
2005088Sab196087 
2015088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_DEBUGSTR),	SHT_SUNW_DEBUGSTR },
2025088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_DEBUGSTR_ALT1),	SHT_SUNW_DEBUGSTR },
2035088Sab196087 
2045088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_DEBUG),		SHT_SUNW_DEBUG },
2055088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_DEBUG_ALT1),	SHT_SUNW_DEBUG },
2065088Sab196087 
2075088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_MOVE),		SHT_SUNW_move },
2085088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_MOVE_ALT1),	SHT_SUNW_move },
2095088Sab196087 
2105088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_COMDAT),	SHT_SUNW_COMDAT },
2115088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_COMDAT_ALT1),	SHT_SUNW_COMDAT },
2125088Sab196087 
2135088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_SYMINFO),	SHT_SUNW_syminfo },
2145088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_SYMINFO_ALT1),	SHT_SUNW_syminfo },
2155088Sab196087 
2165088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_VERDEF),	SHT_SUNW_verdef },
2175088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_VERDEF_ALT1),	SHT_SUNW_verdef },
2185088Sab196087 
2195088Sab196087 	{ MSG_ORIG(MSG_SHT_GNU_VERDEF),		SHT_GNU_verdef },
2205088Sab196087 	{ MSG_ORIG(MSG_SHT_GNU_VERDEF_ALT1),	SHT_GNU_verdef },
2215088Sab196087 
2225088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_VERNEED),	SHT_SUNW_verneed },
2235088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_VERNEED_ALT1),	SHT_SUNW_verneed },
2245088Sab196087 
2255088Sab196087 	{ MSG_ORIG(MSG_SHT_GNU_VERNEED),	SHT_GNU_verneed },
2265088Sab196087 	{ MSG_ORIG(MSG_SHT_GNU_VERNEED_ALT1),	SHT_GNU_verneed },
2275088Sab196087 
2285088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_VERSYM),	SHT_SUNW_versym },
2295088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_VERSYM_ALT1),	SHT_SUNW_versym },
2305088Sab196087 
2315088Sab196087 	{ MSG_ORIG(MSG_SHT_GNU_VERSYM),		SHT_GNU_versym },
2325088Sab196087 	{ MSG_ORIG(MSG_SHT_GNU_VERSYM_ALT1),	SHT_GNU_versym },
2335088Sab196087 
2345088Sab196087 	{ MSG_ORIG(MSG_SHT_SPARC_GOTDATA),	SHT_SPARC_GOTDATA },
2355088Sab196087 	{ MSG_ORIG(MSG_SHT_SPARC_GOTDATA_ALT1),	SHT_SPARC_GOTDATA },
2365088Sab196087 
2375088Sab196087 	{ MSG_ORIG(MSG_SHT_AMD64_UNWIND),	SHT_AMD64_UNWIND },
2385088Sab196087 	{ MSG_ORIG(MSG_SHT_AMD64_UNWIND_ALT1),	SHT_AMD64_UNWIND },
2395088Sab196087 
2405088Sab196087 	{ NULL }
2415088Sab196087 };
2425088Sab196087 
2435088Sab196087 /*
2445088Sab196087  * ELF section types.
2455088Sab196087  */
2465088Sab196087 static elfedit_atoui_sym_t sym_sht_strtab[] = {
2475088Sab196087 	{ MSG_ORIG(MSG_SHT_STRTAB),		SHT_STRTAB },
2485088Sab196087 	{ MSG_ORIG(MSG_SHT_STRTAB_ALT1),	SHT_STRTAB },
2495088Sab196087 
2505088Sab196087 	{ NULL }
2515088Sab196087 };
2525088Sab196087 
2535088Sab196087 
2545088Sab196087 /*
2555088Sab196087  * ELF section types for symbol tables
2565088Sab196087  */
2575088Sab196087 static elfedit_atoui_sym_t sym_sht_allsymtab[] = {
2585088Sab196087 	{ MSG_ORIG(MSG_SHT_SYMTAB),		SHT_SYMTAB },
2595088Sab196087 	{ MSG_ORIG(MSG_SHT_SYMTAB_ALT1),	SHT_SYMTAB },
2605088Sab196087 
2615088Sab196087 	{ MSG_ORIG(MSG_SHT_DYNSYM),		SHT_DYNSYM },
2625088Sab196087 	{ MSG_ORIG(MSG_SHT_DYNSYM_ALT1),	SHT_DYNSYM },
2635088Sab196087 
2645088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_LDYNSYM),	SHT_SUNW_LDYNSYM },
2655088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_LDYNSYM_ALT1),	SHT_SUNW_LDYNSYM },
2665088Sab196087 
2675088Sab196087 	{ NULL }
2685088Sab196087 };
2695088Sab196087 
2705088Sab196087 /*
2715088Sab196087  * ELF section types for SHT_SYMTAB
2725088Sab196087  */
2735088Sab196087 static elfedit_atoui_sym_t sym_sht_symtab[] = {
2745088Sab196087 	{ MSG_ORIG(MSG_SHT_SYMTAB),		SHT_SYMTAB },
2755088Sab196087 	{ MSG_ORIG(MSG_SHT_SYMTAB_ALT1),	SHT_SYMTAB },
2765088Sab196087 
2775088Sab196087 	{ NULL }
2785088Sab196087 };
2795088Sab196087 
2805088Sab196087 /*
2815088Sab196087  * ELF section types for SHT_SYMTAB
2825088Sab196087  */
2835088Sab196087 static elfedit_atoui_sym_t sym_sht_dynsym[] = {
2845088Sab196087 	{ MSG_ORIG(MSG_SHT_DYNSYM),		SHT_DYNSYM },
2855088Sab196087 	{ MSG_ORIG(MSG_SHT_DYNSYM_ALT1),	SHT_DYNSYM },
2865088Sab196087 
2875088Sab196087 	{ NULL }
2885088Sab196087 };
2895088Sab196087 
2905088Sab196087 /*
2915088Sab196087  * ELF section types for SHT_SUNW_LDYNSYM
2925088Sab196087  */
2935088Sab196087 static elfedit_atoui_sym_t sym_sht_ldynsym[] = {
2945088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_LDYNSYM),	SHT_SUNW_LDYNSYM },
2955088Sab196087 	{ MSG_ORIG(MSG_SHT_SUNW_LDYNSYM_ALT1),	SHT_SUNW_LDYNSYM },
2965088Sab196087 
2975088Sab196087 	{ NULL }
2985088Sab196087 };
2995088Sab196087 
3005088Sab196087 /*
3015088Sab196087  * ELF dynamic tag DT_ values
3025088Sab196087  */
3035088Sab196087 static elfedit_atoui_sym_t sym_dt[] = {
3045088Sab196087 	{ MSG_ORIG(MSG_DT_NULL),		DT_NULL },
3055088Sab196087 	{ MSG_ORIG(MSG_DT_NULL_ALT1),		DT_NULL },
3065088Sab196087 
3075088Sab196087 	{ MSG_ORIG(MSG_DT_NEEDED),		DT_NEEDED },
3085088Sab196087 	{ MSG_ORIG(MSG_DT_NEEDED_ALT1),		DT_NEEDED },
3095088Sab196087 
3105088Sab196087 	{ MSG_ORIG(MSG_DT_PLTRELSZ),		DT_PLTRELSZ },
3115088Sab196087 	{ MSG_ORIG(MSG_DT_PLTRELSZ_ALT1),	DT_PLTRELSZ },
3125088Sab196087 
3135088Sab196087 	{ MSG_ORIG(MSG_DT_PLTGOT),		DT_PLTGOT },
3145088Sab196087 	{ MSG_ORIG(MSG_DT_PLTGOT_ALT1),		DT_PLTGOT },
3155088Sab196087 
3165088Sab196087 	{ MSG_ORIG(MSG_DT_HASH),		DT_HASH },
3175088Sab196087 	{ MSG_ORIG(MSG_DT_HASH_ALT1),		DT_HASH },
3185088Sab196087 
3195088Sab196087 	{ MSG_ORIG(MSG_DT_STRTAB),		DT_STRTAB },
3205088Sab196087 	{ MSG_ORIG(MSG_DT_STRTAB_ALT1),		DT_STRTAB },
3215088Sab196087 
3225088Sab196087 	{ MSG_ORIG(MSG_DT_SYMTAB),		DT_SYMTAB },
3235088Sab196087 	{ MSG_ORIG(MSG_DT_SYMTAB_ALT1),		DT_SYMTAB },
3245088Sab196087 
3255088Sab196087 	{ MSG_ORIG(MSG_DT_RELA),		DT_RELA },
3265088Sab196087 	{ MSG_ORIG(MSG_DT_RELA_ALT1),		DT_RELA },
3275088Sab196087 
3285088Sab196087 	{ MSG_ORIG(MSG_DT_RELASZ),		DT_RELASZ },
3295088Sab196087 	{ MSG_ORIG(MSG_DT_RELASZ_ALT1),		DT_RELASZ },
3305088Sab196087 
3315088Sab196087 	{ MSG_ORIG(MSG_DT_RELAENT),		DT_RELAENT },
3325088Sab196087 	{ MSG_ORIG(MSG_DT_RELAENT_ALT1),	DT_RELAENT },
3335088Sab196087 
3345088Sab196087 	{ MSG_ORIG(MSG_DT_STRSZ),		DT_STRSZ },
3355088Sab196087 	{ MSG_ORIG(MSG_DT_STRSZ_ALT1),		DT_STRSZ },
3365088Sab196087 
3375088Sab196087 	{ MSG_ORIG(MSG_DT_SYMENT),		DT_SYMENT },
3385088Sab196087 	{ MSG_ORIG(MSG_DT_SYMENT_ALT1),		DT_SYMENT },
3395088Sab196087 
3405088Sab196087 	{ MSG_ORIG(MSG_DT_INIT),		DT_INIT },
3415088Sab196087 	{ MSG_ORIG(MSG_DT_INIT_ALT1),		DT_INIT },
3425088Sab196087 
3435088Sab196087 	{ MSG_ORIG(MSG_DT_FINI),		DT_FINI },
3445088Sab196087 	{ MSG_ORIG(MSG_DT_FINI_ALT1),		DT_FINI },
3455088Sab196087 
3465088Sab196087 	{ MSG_ORIG(MSG_DT_SONAME),		DT_SONAME },
3475088Sab196087 	{ MSG_ORIG(MSG_DT_SONAME_ALT1),		DT_SONAME },
3485088Sab196087 
3495088Sab196087 	{ MSG_ORIG(MSG_DT_RPATH),		DT_RPATH },
3505088Sab196087 	{ MSG_ORIG(MSG_DT_RPATH_ALT1),		DT_RPATH },
3515088Sab196087 
3525088Sab196087 	{ MSG_ORIG(MSG_DT_SYMBOLIC),		DT_SYMBOLIC },
3535088Sab196087 	{ MSG_ORIG(MSG_DT_SYMBOLIC_ALT1),	DT_SYMBOLIC },
3545088Sab196087 
3555088Sab196087 	{ MSG_ORIG(MSG_DT_REL),			DT_REL },
3565088Sab196087 	{ MSG_ORIG(MSG_DT_REL_ALT1),		DT_REL },
3575088Sab196087 
3585088Sab196087 	{ MSG_ORIG(MSG_DT_RELSZ),		DT_RELSZ },
3595088Sab196087 	{ MSG_ORIG(MSG_DT_RELSZ_ALT1),		DT_RELSZ },
3605088Sab196087 
3615088Sab196087 	{ MSG_ORIG(MSG_DT_RELENT),		DT_RELENT },
3625088Sab196087 	{ MSG_ORIG(MSG_DT_RELENT_ALT1),		DT_RELENT },
3635088Sab196087 
3645088Sab196087 	{ MSG_ORIG(MSG_DT_PLTREL),		DT_PLTREL },
3655088Sab196087 	{ MSG_ORIG(MSG_DT_PLTREL_ALT1),		DT_PLTREL },
3665088Sab196087 
3675088Sab196087 	{ MSG_ORIG(MSG_DT_DEBUG),		DT_DEBUG },
3685088Sab196087 	{ MSG_ORIG(MSG_DT_DEBUG_ALT1),		DT_DEBUG },
3695088Sab196087 
3705088Sab196087 	{ MSG_ORIG(MSG_DT_TEXTREL),		DT_TEXTREL },
3715088Sab196087 	{ MSG_ORIG(MSG_DT_TEXTREL_ALT1),	DT_TEXTREL },
3725088Sab196087 
3735088Sab196087 	{ MSG_ORIG(MSG_DT_JMPREL),		DT_JMPREL },
3745088Sab196087 	{ MSG_ORIG(MSG_DT_JMPREL_ALT1),		DT_JMPREL },
3755088Sab196087 
3765088Sab196087 	{ MSG_ORIG(MSG_DT_BIND_NOW),		DT_BIND_NOW },
3775088Sab196087 	{ MSG_ORIG(MSG_DT_BIND_NOW_ALT1),	DT_BIND_NOW },
3785088Sab196087 
3795088Sab196087 	{ MSG_ORIG(MSG_DT_INIT_ARRAY),		DT_INIT_ARRAY },
3805088Sab196087 	{ MSG_ORIG(MSG_DT_INIT_ARRAY_ALT1),	DT_INIT_ARRAY },
3815088Sab196087 
3825088Sab196087 	{ MSG_ORIG(MSG_DT_FINI_ARRAY),		DT_FINI_ARRAY },
3835088Sab196087 	{ MSG_ORIG(MSG_DT_FINI_ARRAY_ALT1),	DT_FINI_ARRAY },
3845088Sab196087 
3855088Sab196087 	{ MSG_ORIG(MSG_DT_INIT_ARRAYSZ),	DT_INIT_ARRAYSZ },
3865088Sab196087 	{ MSG_ORIG(MSG_DT_INIT_ARRAYSZ_ALT1),	DT_INIT_ARRAYSZ },
3875088Sab196087 
3885088Sab196087 	{ MSG_ORIG(MSG_DT_FINI_ARRAYSZ),	DT_FINI_ARRAYSZ },
3895088Sab196087 	{ MSG_ORIG(MSG_DT_FINI_ARRAYSZ_ALT1),	DT_FINI_ARRAYSZ },
3905088Sab196087 
3915088Sab196087 	{ MSG_ORIG(MSG_DT_RUNPATH),		DT_RUNPATH },
3925088Sab196087 	{ MSG_ORIG(MSG_DT_RUNPATH_ALT1),	DT_RUNPATH },
3935088Sab196087 
3945088Sab196087 	{ MSG_ORIG(MSG_DT_FLAGS),		DT_FLAGS },
3955088Sab196087 	{ MSG_ORIG(MSG_DT_FLAGS_ALT1),		DT_FLAGS },
3965088Sab196087 
3975088Sab196087 	{ MSG_ORIG(MSG_DT_PREINIT_ARRAY),	DT_PREINIT_ARRAY },
3985088Sab196087 	{ MSG_ORIG(MSG_DT_PREINIT_ARRAY_ALT1),	DT_PREINIT_ARRAY },
3995088Sab196087 
4005088Sab196087 	{ MSG_ORIG(MSG_DT_PREINIT_ARRAYSZ),	DT_PREINIT_ARRAYSZ },
4015088Sab196087 	{ MSG_ORIG(MSG_DT_PREINIT_ARRAYSZ_ALT1), DT_PREINIT_ARRAYSZ },
4025088Sab196087 
4035088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_AUXILIARY),	DT_SUNW_AUXILIARY },
4045088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_AUXILIARY_ALT1),	DT_SUNW_AUXILIARY },
4055088Sab196087 
4065088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_RTLDINF),	DT_SUNW_RTLDINF },
4075088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_RTLDINF_ALT1),	DT_SUNW_RTLDINF },
4085088Sab196087 
4095088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_FILTER),		DT_SUNW_FILTER },
4105088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_FILTER_ALT1),	DT_SUNW_FILTER },
4115088Sab196087 
4125088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_CAP),		DT_SUNW_CAP },
4135088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_CAP_ALT1),	DT_SUNW_CAP },
4145088Sab196087 
4155088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_SYMTAB),		DT_SUNW_SYMTAB },
4165088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_SYMTAB_ALT1),	DT_SUNW_SYMTAB },
4175088Sab196087 
4185088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_SYMSZ),		DT_SUNW_SYMSZ },
4195088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_SYMSZ_ALT1),	DT_SUNW_SYMSZ },
4205088Sab196087 
4215088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_SORTENT),	DT_SUNW_SORTENT },
4225088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_SORTENT_ALT1),	DT_SUNW_SORTENT },
4235088Sab196087 
4245088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_SYMSORT),	DT_SUNW_SYMSORT },
4255088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_SYMSORT_ALT1),	DT_SUNW_SYMSORT },
4265088Sab196087 
4275088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_SYMSORTSZ),	DT_SUNW_SYMSORTSZ },
4285088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_SYMSORTSZ_ALT1),	DT_SUNW_SYMSORTSZ },
4295088Sab196087 
4305088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_TLSSORT),	DT_SUNW_TLSSORT },
4315088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_TLSSORT_ALT1),	DT_SUNW_TLSSORT },
4325088Sab196087 
4335088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_TLSSORTSZ),	DT_SUNW_TLSSORTSZ },
4345088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_TLSSORTSZ_ALT1),	DT_SUNW_TLSSORTSZ },
4355088Sab196087 
4365088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_STRPAD),		DT_SUNW_STRPAD },
4375088Sab196087 	{ MSG_ORIG(MSG_DT_SUNW_STRPAD_ALT1),	DT_SUNW_STRPAD },
4385088Sab196087 
4395088Sab196087 	{ MSG_ORIG(MSG_DT_SPARC_REGISTER),	DT_SPARC_REGISTER },
4405088Sab196087 	{ MSG_ORIG(MSG_DT_SPARC_REGISTER_ALT1),	DT_SPARC_REGISTER },
4415088Sab196087 
4425088Sab196087 	{ MSG_ORIG(MSG_DT_DEPRECATED_SPARC_REGISTER),
4435088Sab196087 						DT_DEPRECATED_SPARC_REGISTER },
4445088Sab196087 	{ MSG_ORIG(MSG_DT_DEPRECATED_SPARC_REGISTER_ALT1),
4455088Sab196087 						DT_DEPRECATED_SPARC_REGISTER },
4465088Sab196087 
4475088Sab196087 	{ MSG_ORIG(MSG_DT_CHECKSUM),		DT_CHECKSUM },
4485088Sab196087 	{ MSG_ORIG(MSG_DT_CHECKSUM_ALT1),	DT_CHECKSUM },
4495088Sab196087 
4505088Sab196087 	{ MSG_ORIG(MSG_DT_PLTPADSZ),		DT_PLTPADSZ },
4515088Sab196087 	{ MSG_ORIG(MSG_DT_PLTPADSZ_ALT1),	DT_PLTPADSZ },
4525088Sab196087 
4535088Sab196087 	{ MSG_ORIG(MSG_DT_MOVEENT),		DT_MOVEENT },
4545088Sab196087 	{ MSG_ORIG(MSG_DT_MOVEENT_ALT1),	DT_MOVEENT },
4555088Sab196087 
4565088Sab196087 	{ MSG_ORIG(MSG_DT_MOVESZ),		DT_MOVESZ },
4575088Sab196087 	{ MSG_ORIG(MSG_DT_MOVESZ_ALT1),		DT_MOVESZ },
4585088Sab196087 
4595088Sab196087 	{ MSG_ORIG(MSG_DT_FEATURE_1),		DT_FEATURE_1 },
4605088Sab196087 	{ MSG_ORIG(MSG_DT_FEATURE_1_ALT1),	DT_FEATURE_1 },
4615088Sab196087 
4625088Sab196087 	{ MSG_ORIG(MSG_DT_POSFLAG_1),		DT_POSFLAG_1 },
4635088Sab196087 	{ MSG_ORIG(MSG_DT_POSFLAG_1_ALT1),	DT_POSFLAG_1 },
4645088Sab196087 
4655088Sab196087 	{ MSG_ORIG(MSG_DT_SYMINSZ),		DT_SYMINSZ },
4665088Sab196087 	{ MSG_ORIG(MSG_DT_SYMINSZ_ALT1),	DT_SYMINSZ },
4675088Sab196087 
4685088Sab196087 	{ MSG_ORIG(MSG_DT_SYMINENT),		DT_SYMINENT },
4695088Sab196087 	{ MSG_ORIG(MSG_DT_SYMINENT_ALT1),	DT_SYMINENT },
4705088Sab196087 
4715088Sab196087 	{ MSG_ORIG(MSG_DT_CONFIG),		DT_CONFIG },
4725088Sab196087 	{ MSG_ORIG(MSG_DT_CONFIG_ALT1),		DT_CONFIG },
4735088Sab196087 
4745088Sab196087 	{ MSG_ORIG(MSG_DT_DEPAUDIT),		DT_DEPAUDIT },
4755088Sab196087 	{ MSG_ORIG(MSG_DT_DEPAUDIT_ALT1),	DT_DEPAUDIT },
4765088Sab196087 
4775088Sab196087 	{ MSG_ORIG(MSG_DT_AUDIT),		DT_AUDIT },
4785088Sab196087 	{ MSG_ORIG(MSG_DT_AUDIT_ALT1),		DT_AUDIT },
4795088Sab196087 
4805088Sab196087 	{ MSG_ORIG(MSG_DT_PLTPAD),		DT_PLTPAD },
4815088Sab196087 	{ MSG_ORIG(MSG_DT_PLTPAD_ALT1),		DT_PLTPAD },
4825088Sab196087 
4835088Sab196087 	{ MSG_ORIG(MSG_DT_MOVETAB),		DT_MOVETAB },
4845088Sab196087 	{ MSG_ORIG(MSG_DT_MOVETAB_ALT1),	DT_MOVETAB },
4855088Sab196087 
4865088Sab196087 	{ MSG_ORIG(MSG_DT_SYMINFO),		DT_SYMINFO },
4875088Sab196087 	{ MSG_ORIG(MSG_DT_SYMINFO_ALT1),	DT_SYMINFO },
4885088Sab196087 
4895088Sab196087 	{ MSG_ORIG(MSG_DT_VERSYM),		DT_VERSYM },
4905088Sab196087 	{ MSG_ORIG(MSG_DT_VERSYM_ALT1),		DT_VERSYM },
4915088Sab196087 
4925088Sab196087 	{ MSG_ORIG(MSG_DT_RELACOUNT),		DT_RELACOUNT },
4935088Sab196087 	{ MSG_ORIG(MSG_DT_RELACOUNT_ALT1),	DT_RELACOUNT },
4945088Sab196087 
4955088Sab196087 	{ MSG_ORIG(MSG_DT_RELCOUNT),		DT_RELCOUNT },
4965088Sab196087 	{ MSG_ORIG(MSG_DT_RELCOUNT_ALT1),	DT_RELCOUNT },
4975088Sab196087 
4985088Sab196087 	{ MSG_ORIG(MSG_DT_FLAGS_1),		DT_FLAGS_1 },
4995088Sab196087 	{ MSG_ORIG(MSG_DT_FLAGS_1_ALT1),	DT_FLAGS_1 },
5005088Sab196087 
5015088Sab196087 	{ MSG_ORIG(MSG_DT_VERDEF),		DT_VERDEF },
5025088Sab196087 	{ MSG_ORIG(MSG_DT_VERDEF_ALT1),		DT_VERDEF },
5035088Sab196087 
5045088Sab196087 	{ MSG_ORIG(MSG_DT_VERDEFNUM),		DT_VERDEFNUM },
5055088Sab196087 	{ MSG_ORIG(MSG_DT_VERDEFNUM_ALT1),	DT_VERDEFNUM },
5065088Sab196087 
5075088Sab196087 	{ MSG_ORIG(MSG_DT_VERNEED),		DT_VERNEED },
5085088Sab196087 	{ MSG_ORIG(MSG_DT_VERNEED_ALT1),	DT_VERNEED },
5095088Sab196087 
5105088Sab196087 	{ MSG_ORIG(MSG_DT_VERNEEDNUM),		DT_VERNEEDNUM },
5115088Sab196087 	{ MSG_ORIG(MSG_DT_VERNEEDNUM_ALT1),	DT_VERNEEDNUM },
5125088Sab196087 
5135088Sab196087 	{ MSG_ORIG(MSG_DT_AUXILIARY),		DT_AUXILIARY },
5145088Sab196087 	{ MSG_ORIG(MSG_DT_AUXILIARY_ALT1),	DT_AUXILIARY },
5155088Sab196087 
5165088Sab196087 	{ MSG_ORIG(MSG_DT_USED),		DT_USED },
5175088Sab196087 	{ MSG_ORIG(MSG_DT_USED_ALT1),		DT_USED },
5185088Sab196087 
5195088Sab196087 	{ MSG_ORIG(MSG_DT_FILTER),		DT_FILTER },
5205088Sab196087 	{ MSG_ORIG(MSG_DT_FILTER_ALT1),		DT_FILTER },
5215088Sab196087 
5225088Sab196087 	{ NULL }
5235088Sab196087 };
5245088Sab196087 
5255088Sab196087 
5265088Sab196087 /*
5275088Sab196087  * ELF DT_FLAGS DF_* values
5285088Sab196087  */
5295088Sab196087 static elfedit_atoui_sym_t sym_df[] = {
5305088Sab196087 	{ MSG_ORIG(MSG_DF_ORIGIN),		DF_ORIGIN },
5315088Sab196087 	{ MSG_ORIG(MSG_DF_ORIGIN_ALT1),		DF_ORIGIN },
5325088Sab196087 
5335088Sab196087 	{ MSG_ORIG(MSG_DF_SYMBOLIC),		DF_SYMBOLIC },
5345088Sab196087 	{ MSG_ORIG(MSG_DF_SYMBOLIC_ALT1),	DF_SYMBOLIC },
5355088Sab196087 
5365088Sab196087 	{ MSG_ORIG(MSG_DF_TEXTREL),		DF_TEXTREL },
5375088Sab196087 	{ MSG_ORIG(MSG_DF_TEXTREL_ALT1),	DF_TEXTREL },
5385088Sab196087 
5395088Sab196087 	{ MSG_ORIG(MSG_DF_BIND_NOW),		DF_BIND_NOW },
5405088Sab196087 	{ MSG_ORIG(MSG_DF_BIND_NOW_ALT1),	DF_BIND_NOW },
5415088Sab196087 
5425088Sab196087 	{ MSG_ORIG(MSG_DF_STATIC_TLS),		DF_STATIC_TLS },
5435088Sab196087 	{ MSG_ORIG(MSG_DF_STATIC_TLS_ALT1),	DF_STATIC_TLS },
5445088Sab196087 
5455088Sab196087 	{ NULL }
5465088Sab196087 };
5475088Sab196087 
5485088Sab196087 
5495088Sab196087 /*
5505088Sab196087  * ELF DT_POSFLAG_1 DF_P1_* values
5515088Sab196087  */
5525088Sab196087 static elfedit_atoui_sym_t sym_df_p1[] = {
5535088Sab196087 	{ MSG_ORIG(MSG_DF_P1_LAZYLOAD),		DF_P1_LAZYLOAD },
5545088Sab196087 	{ MSG_ORIG(MSG_DF_P1_LAZYLOAD_ALT1),	DF_P1_LAZYLOAD },
5555088Sab196087 
5565088Sab196087 	{ MSG_ORIG(MSG_DF_P1_GROUPPERM),	DF_P1_GROUPPERM },
5575088Sab196087 	{ MSG_ORIG(MSG_DF_P1_GROUPPERM_ALT1),	DF_P1_GROUPPERM },
5585088Sab196087 
5595088Sab196087 	{ NULL }
5605088Sab196087 };
5615088Sab196087 
5625088Sab196087 
5635088Sab196087 /*
5645088Sab196087  * ELF DT_FLAGS_1 DF_1_* values
5655088Sab196087  */
5665088Sab196087 static elfedit_atoui_sym_t sym_df_1[] = {
5675088Sab196087 	{ MSG_ORIG(MSG_DF_1_NOW),		DF_1_NOW },
5685088Sab196087 	{ MSG_ORIG(MSG_DF_1_NOW_ALT1),		DF_1_NOW },
5695088Sab196087 
5705088Sab196087 	{ MSG_ORIG(MSG_DF_1_GLOBAL),		DF_1_GLOBAL },
5715088Sab196087 	{ MSG_ORIG(MSG_DF_1_GLOBAL_ALT1),	DF_1_GLOBAL },
5725088Sab196087 
5735088Sab196087 	{ MSG_ORIG(MSG_DF_1_GROUP),		DF_1_GROUP },
5745088Sab196087 	{ MSG_ORIG(MSG_DF_1_GROUP_ALT1),	DF_1_GROUP },
5755088Sab196087 
5765088Sab196087 	{ MSG_ORIG(MSG_DF_1_NODELETE),		DF_1_NODELETE },
5775088Sab196087 	{ MSG_ORIG(MSG_DF_1_NODELETE_ALT1),	DF_1_NODELETE },
5785088Sab196087 
5795088Sab196087 	{ MSG_ORIG(MSG_DF_1_LOADFLTR),		DF_1_LOADFLTR },
5805088Sab196087 	{ MSG_ORIG(MSG_DF_1_LOADFLTR_ALT1),	DF_1_LOADFLTR },
5815088Sab196087 
5825088Sab196087 	{ MSG_ORIG(MSG_DF_1_INITFIRST),		DF_1_INITFIRST },
5835088Sab196087 	{ MSG_ORIG(MSG_DF_1_INITFIRST_ALT1),	DF_1_INITFIRST },
5845088Sab196087 
5855088Sab196087 	{ MSG_ORIG(MSG_DF_1_NOOPEN),		DF_1_NOOPEN },
5865088Sab196087 	{ MSG_ORIG(MSG_DF_1_NOOPEN_ALT1),	DF_1_NOOPEN },
5875088Sab196087 
5885088Sab196087 	{ MSG_ORIG(MSG_DF_1_ORIGIN),		DF_1_ORIGIN },
5895088Sab196087 	{ MSG_ORIG(MSG_DF_1_ORIGIN_ALT1),	DF_1_ORIGIN },
5905088Sab196087 
5915088Sab196087 	{ MSG_ORIG(MSG_DF_1_DIRECT),		DF_1_DIRECT },
5925088Sab196087 	{ MSG_ORIG(MSG_DF_1_DIRECT_ALT1),	DF_1_DIRECT },
5935088Sab196087 
5945088Sab196087 	{ MSG_ORIG(MSG_DF_1_TRANS),		DF_1_TRANS },
5955088Sab196087 	{ MSG_ORIG(MSG_DF_1_TRANS_ALT1),	DF_1_TRANS },
5965088Sab196087 
5975088Sab196087 	{ MSG_ORIG(MSG_DF_1_INTERPOSE),		DF_1_INTERPOSE },
5985088Sab196087 	{ MSG_ORIG(MSG_DF_1_INTERPOSE_ALT1),	DF_1_INTERPOSE },
5995088Sab196087 
6005088Sab196087 	{ MSG_ORIG(MSG_DF_1_NODEFLIB),		DF_1_NODEFLIB },
6015088Sab196087 	{ MSG_ORIG(MSG_DF_1_NODEFLIB_ALT1),	DF_1_NODEFLIB },
6025088Sab196087 
6035088Sab196087 	{ MSG_ORIG(MSG_DF_1_NODUMP),		DF_1_NODUMP },
6045088Sab196087 	{ MSG_ORIG(MSG_DF_1_NODUMP_ALT1),	DF_1_NODUMP },
6055088Sab196087 
6065088Sab196087 	{ MSG_ORIG(MSG_DF_1_CONFALT),		DF_1_CONFALT },
6075088Sab196087 	{ MSG_ORIG(MSG_DF_1_CONFALT_ALT1),	DF_1_CONFALT },
6085088Sab196087 
6095088Sab196087 	{ MSG_ORIG(MSG_DF_1_ENDFILTEE),		DF_1_ENDFILTEE },
6105088Sab196087 	{ MSG_ORIG(MSG_DF_1_ENDFILTEE_ALT1),	DF_1_ENDFILTEE },
6115088Sab196087 
6125088Sab196087 	{ MSG_ORIG(MSG_DF_1_DISPRELDNE),	DF_1_DISPRELDNE },
6135088Sab196087 	{ MSG_ORIG(MSG_DF_1_DISPRELDNE_ALT1),	DF_1_DISPRELDNE },
6145088Sab196087 
6155088Sab196087 	{ MSG_ORIG(MSG_DF_1_DISPRELPND),	DF_1_DISPRELPND },
6165088Sab196087 	{ MSG_ORIG(MSG_DF_1_DISPRELPND_ALT1),	DF_1_DISPRELPND },
6175088Sab196087 
6185088Sab196087 	{ MSG_ORIG(MSG_DF_1_NODIRECT),		DF_1_NODIRECT },
6195088Sab196087 	{ MSG_ORIG(MSG_DF_1_NODIRECT_ALT1),	DF_1_NODIRECT },
6205088Sab196087 
6215088Sab196087 	{ MSG_ORIG(MSG_DF_1_IGNMULDEF),		DF_1_IGNMULDEF },
6225088Sab196087 	{ MSG_ORIG(MSG_DF_1_IGNMULDEF_ALT1),	DF_1_IGNMULDEF },
6235088Sab196087 
6245088Sab196087 	{ MSG_ORIG(MSG_DF_1_NOKSYMS),		DF_1_NOKSYMS },
6255088Sab196087 	{ MSG_ORIG(MSG_DF_1_NOKSYMS_ALT1),	DF_1_NOKSYMS },
6265088Sab196087 
6275088Sab196087 	{ MSG_ORIG(MSG_DF_1_NOHDR),		DF_1_NOHDR },
6285088Sab196087 	{ MSG_ORIG(MSG_DF_1_NOHDR_ALT1),	DF_1_NOHDR },
6295088Sab196087 
6305088Sab196087 	{ MSG_ORIG(MSG_DF_1_EDITED),		DF_1_EDITED },
6315088Sab196087 	{ MSG_ORIG(MSG_DF_1_EDITED_ALT1),	DF_1_EDITED },
6325088Sab196087 
6335088Sab196087 	{ MSG_ORIG(MSG_DF_1_NORELOC),		DF_1_NORELOC },
6345088Sab196087 	{ MSG_ORIG(MSG_DF_1_NORELOC_ALT1),	DF_1_NORELOC },
6355088Sab196087 
6365088Sab196087 	{ MSG_ORIG(MSG_DF_1_SYMINTPOSE),	DF_1_SYMINTPOSE },
6375088Sab196087 	{ MSG_ORIG(MSG_DF_1_SYMINTPOSE_ALT1),	DF_1_SYMINTPOSE },
6385088Sab196087 
6395088Sab196087 	{ MSG_ORIG(MSG_DF_1_GLOBAUDIT),		DF_1_GLOBAUDIT },
6405088Sab196087 	{ MSG_ORIG(MSG_DF_1_GLOBAUDIT_ALT1),	DF_1_GLOBAUDIT },
6415088Sab196087 
6425088Sab196087 	{ NULL }
6435088Sab196087 };
6445088Sab196087 
6455088Sab196087 
6465088Sab196087 /*
6475088Sab196087  * ELF DT_FEATURE_1 DTF_1_* values
6485088Sab196087  */
6495088Sab196087 static elfedit_atoui_sym_t sym_dtf_1[] = {
6505088Sab196087 	{ MSG_ORIG(MSG_DTF_1_PARINIT),		DTF_1_PARINIT },
6515088Sab196087 	{ MSG_ORIG(MSG_DTF_1_PARINIT_ALT1),	DTF_1_PARINIT },
6525088Sab196087 
6535088Sab196087 	{ MSG_ORIG(MSG_DTF_1_CONFEXP),		DTF_1_CONFEXP },
6545088Sab196087 	{ MSG_ORIG(MSG_DTF_1_CONFEXP_ALT1),	DTF_1_CONFEXP },
6555088Sab196087 
6565088Sab196087 	{ NULL }
6575088Sab196087 };
6585088Sab196087 
6595088Sab196087 /*
6605088Sab196087  * ELF header EI_* indexes
6615088Sab196087  */
6625088Sab196087 static elfedit_atoui_sym_t sym_ei[] = {
6635088Sab196087 	{ MSG_ORIG(MSG_EI_MAG0),		EI_MAG0 },
6645088Sab196087 	{ MSG_ORIG(MSG_EI_MAG0_ALT1),		EI_MAG0 },
6655088Sab196087 
6665088Sab196087 	{ MSG_ORIG(MSG_EI_MAG1),		EI_MAG1 },
6675088Sab196087 	{ MSG_ORIG(MSG_EI_MAG1_ALT1),		EI_MAG1 },
6685088Sab196087 
6695088Sab196087 	{ MSG_ORIG(MSG_EI_MAG2),		EI_MAG2 },
6705088Sab196087 	{ MSG_ORIG(MSG_EI_MAG2_ALT1),		EI_MAG2 },
6715088Sab196087 
6725088Sab196087 	{ MSG_ORIG(MSG_EI_MAG3),		EI_MAG3 },
6735088Sab196087 	{ MSG_ORIG(MSG_EI_MAG3_ALT1),		EI_MAG3 },
6745088Sab196087 
6755088Sab196087 	{ MSG_ORIG(MSG_EI_CLASS),		EI_CLASS },
6765088Sab196087 	{ MSG_ORIG(MSG_EI_CLASS_ALT1),		EI_CLASS },
6775088Sab196087 
6785088Sab196087 	{ MSG_ORIG(MSG_EI_DATA),		EI_DATA },
6795088Sab196087 	{ MSG_ORIG(MSG_EI_DATA_ALT1),		EI_DATA },
6805088Sab196087 
6815088Sab196087 	{ MSG_ORIG(MSG_EI_VERSION),		EI_VERSION },
6825088Sab196087 	{ MSG_ORIG(MSG_EI_VERSION_ALT1),	EI_VERSION },
6835088Sab196087 
6845088Sab196087 	{ MSG_ORIG(MSG_EI_OSABI),		EI_OSABI },
6855088Sab196087 	{ MSG_ORIG(MSG_EI_OSABI_ALT1),		EI_OSABI },
6865088Sab196087 
6875088Sab196087 	{ MSG_ORIG(MSG_EI_ABIVERSION),		EI_ABIVERSION },
6885088Sab196087 	{ MSG_ORIG(MSG_EI_ABIVERSION_ALT1),	EI_ABIVERSION },
6895088Sab196087 
6905088Sab196087 	{ NULL }
6915088Sab196087 };
6925088Sab196087 
6935088Sab196087 /*
6945088Sab196087  * ELF header ET_* file type values
6955088Sab196087  */
6965088Sab196087 static elfedit_atoui_sym_t sym_et[] = {
6975088Sab196087 	{ MSG_ORIG(MSG_ET_NONE),		ET_NONE },
6985088Sab196087 	{ MSG_ORIG(MSG_ET_NONE_ALT1),		ET_NONE },
6995088Sab196087 
7005088Sab196087 	{ MSG_ORIG(MSG_ET_REL),			ET_REL },
7015088Sab196087 	{ MSG_ORIG(MSG_ET_REL_ALT1),		ET_REL },
7025088Sab196087 
7035088Sab196087 	{ MSG_ORIG(MSG_ET_EXEC),		ET_EXEC },
7045088Sab196087 	{ MSG_ORIG(MSG_ET_EXEC_ALT1),		ET_EXEC },
7055088Sab196087 
7065088Sab196087 	{ MSG_ORIG(MSG_ET_DYN),			ET_DYN },
7075088Sab196087 	{ MSG_ORIG(MSG_ET_DYN_ALT1),		ET_DYN },
7085088Sab196087 
7095088Sab196087 	{ MSG_ORIG(MSG_ET_CORE),		ET_CORE },
7105088Sab196087 	{ MSG_ORIG(MSG_ET_CORE_ALT1),		ET_CORE },
7115088Sab196087 
7125088Sab196087 	{ NULL }
7135088Sab196087 };
7145088Sab196087 
7155088Sab196087 /*
7165088Sab196087  * ELFCLASS
7175088Sab196087  */
7185088Sab196087 static elfedit_atoui_sym_t sym_elfclass[] = {
7195088Sab196087 	{ MSG_ORIG(MSG_ELFCLASSNONE),		ELFCLASSNONE },
7205088Sab196087 	{ MSG_ORIG(MSG_ELFCLASSNONE_ALT1),	ELFCLASSNONE },
7215088Sab196087 
7225088Sab196087 	{ MSG_ORIG(MSG_ELFCLASS32),		ELFCLASS32 },
7235088Sab196087 	{ MSG_ORIG(MSG_ELFCLASS32_ALT1),	ELFCLASS32 },
7245088Sab196087 
7255088Sab196087 	{ MSG_ORIG(MSG_ELFCLASS64),		ELFCLASS64 },
7265088Sab196087 	{ MSG_ORIG(MSG_ELFCLASS64_ALT1),	ELFCLASS64 },
7275088Sab196087 
7285088Sab196087 	{ NULL }
7295088Sab196087 };
7305088Sab196087 
7315088Sab196087 /*
7325088Sab196087  * ELFDATA
7335088Sab196087  */
7345088Sab196087 static elfedit_atoui_sym_t sym_elfdata[] = {
7355088Sab196087 	{ MSG_ORIG(MSG_ELFDATANONE),		ELFDATANONE },
7365088Sab196087 	{ MSG_ORIG(MSG_ELFDATANONE_ALT1),	ELFDATANONE },
7375088Sab196087 
7385088Sab196087 	{ MSG_ORIG(MSG_ELFDATA2LSB),		ELFDATA2LSB },
7395088Sab196087 	{ MSG_ORIG(MSG_ELFDATA2LSB_ALT1),	ELFDATA2LSB },
7405088Sab196087 
7415088Sab196087 	{ MSG_ORIG(MSG_ELFDATA2MSB),		ELFDATA2MSB },
7425088Sab196087 	{ MSG_ORIG(MSG_ELFDATA2MSB_ALT1),	ELFDATA2MSB },
7435088Sab196087 
7445088Sab196087 	{ NULL }
7455088Sab196087 };
7465088Sab196087 
7475088Sab196087 /*
7485088Sab196087  * ELF header EF_* flags
7495088Sab196087  */
7505088Sab196087 static elfedit_atoui_sym_t sym_ef[] = {
7515088Sab196087 	{ MSG_ORIG(MSG_EF_SPARC_32PLUS),	EF_SPARC_32PLUS },
7525088Sab196087 	{ MSG_ORIG(MSG_EF_SPARC_32PLUS_ALT1),	EF_SPARC_32PLUS },
7535088Sab196087 
7545088Sab196087 	{ MSG_ORIG(MSG_EF_SPARC_SUN_US1),	EF_SPARC_SUN_US1 },
7555088Sab196087 	{ MSG_ORIG(MSG_EF_SPARC_SUN_US1_ALT1),	EF_SPARC_SUN_US1 },
7565088Sab196087 
7575088Sab196087 	{ MSG_ORIG(MSG_EF_SPARC_HAL_R1),	EF_SPARC_HAL_R1 },
7585088Sab196087 	{ MSG_ORIG(MSG_EF_SPARC_HAL_R1_ALT1),	EF_SPARC_HAL_R1 },
7595088Sab196087 
7605088Sab196087 	{ MSG_ORIG(MSG_EF_SPARC_SUN_US3),	EF_SPARC_SUN_US3 },
7615088Sab196087 	{ MSG_ORIG(MSG_EF_SPARC_SUN_US3_ALT1),	EF_SPARC_SUN_US3 },
7625088Sab196087 
7635088Sab196087 	{ MSG_ORIG(MSG_EF_SPARCV9_MM),		EF_SPARCV9_MM },
7645088Sab196087 	{ MSG_ORIG(MSG_EF_SPARCV9_MM_ALT1),	EF_SPARCV9_MM },
7655088Sab196087 
7665088Sab196087 	{ MSG_ORIG(MSG_EF_SPARCV9_TSO),		EF_SPARCV9_TSO },
7675088Sab196087 	{ MSG_ORIG(MSG_EF_SPARCV9_TSO_ALT1),	EF_SPARCV9_TSO },
7685088Sab196087 
7695088Sab196087 	{ MSG_ORIG(MSG_EF_SPARCV9_PSO),		EF_SPARCV9_PSO },
7705088Sab196087 	{ MSG_ORIG(MSG_EF_SPARCV9_PSO_ALT1),	EF_SPARCV9_PSO },
7715088Sab196087 
7725088Sab196087 	{ MSG_ORIG(MSG_EF_SPARCV9_RMO),		EF_SPARCV9_RMO },
7735088Sab196087 	{ MSG_ORIG(MSG_EF_SPARCV9_RMO_ALT1),	EF_SPARCV9_RMO },
7745088Sab196087 
7755088Sab196087 	{ NULL }
7765088Sab196087 };
7775088Sab196087 
7785088Sab196087 /*
7795088Sab196087  * ELF header EV_* versions
7805088Sab196087  */
7815088Sab196087 static elfedit_atoui_sym_t sym_ev[] = {
7825088Sab196087 	{ MSG_ORIG(MSG_EV_NONE),		EV_NONE },
7835088Sab196087 	{ MSG_ORIG(MSG_EV_NONE_ALT1),		EV_NONE },
7845088Sab196087 
7855088Sab196087 	{ MSG_ORIG(MSG_EV_CURRENT),		EV_CURRENT },
7865088Sab196087 	{ MSG_ORIG(MSG_EV_CURRENT_ALT1),	EV_CURRENT },
7875088Sab196087 
7885088Sab196087 	{ NULL }
7895088Sab196087 };
7905088Sab196087 
7915088Sab196087 /*
7925088Sab196087  * ELF EM_* machine types
7935088Sab196087  */
7945088Sab196087 static elfedit_atoui_sym_t sym_em[] = {
7955088Sab196087 	{ MSG_ORIG(MSG_EM_NONE),		EM_NONE },
7965088Sab196087 	{ MSG_ORIG(MSG_EM_NONE_ALT1),		EM_NONE },
7975088Sab196087 
7985088Sab196087 	{ MSG_ORIG(MSG_EM_M32),			EM_M32 },
7995088Sab196087 	{ MSG_ORIG(MSG_EM_M32_ALT1),		EM_M32 },
8005088Sab196087 	{ MSG_ORIG(MSG_EM_M32_ALT2),		EM_M32 },
8015088Sab196087 
8025088Sab196087 	{ MSG_ORIG(MSG_EM_SPARC),		EM_SPARC },
8035088Sab196087 	{ MSG_ORIG(MSG_EM_SPARC_ALT1),		EM_SPARC },
8045088Sab196087 
8055088Sab196087 	{ MSG_ORIG(MSG_EM_386),			EM_386 },
8065088Sab196087 	{ MSG_ORIG(MSG_EM_386_ALT1),		EM_386 },
8075088Sab196087 	{ MSG_ORIG(MSG_EM_386_ALT2),		EM_386 },
8085088Sab196087 
8095088Sab196087 	{ MSG_ORIG(MSG_EM_68K),			EM_68K },
8105088Sab196087 	{ MSG_ORIG(MSG_EM_68K_ALT1),		EM_68K },
8115088Sab196087 	{ MSG_ORIG(MSG_EM_68K_ALT2),		EM_68K },
8125088Sab196087 
8135088Sab196087 	{ MSG_ORIG(MSG_EM_88K),			EM_88K },
8145088Sab196087 	{ MSG_ORIG(MSG_EM_88K_ALT1),		EM_88K },
8155088Sab196087 	{ MSG_ORIG(MSG_EM_88K_ALT2),		EM_88K },
8165088Sab196087 
8175088Sab196087 	{ MSG_ORIG(MSG_EM_486),			EM_486 },
8185088Sab196087 	{ MSG_ORIG(MSG_EM_486_ALT1),		EM_486 },
8195088Sab196087 	{ MSG_ORIG(MSG_EM_486_ALT2),		EM_486 },
8205088Sab196087 
8215088Sab196087 	{ MSG_ORIG(MSG_EM_860),			EM_860 },
8225088Sab196087 	{ MSG_ORIG(MSG_EM_860_ALT1),		EM_860 },
8235088Sab196087 	{ MSG_ORIG(MSG_EM_860_ALT2),		EM_860 },
8245088Sab196087 
8255088Sab196087 	{ MSG_ORIG(MSG_EM_MIPS),		EM_MIPS },
8265088Sab196087 	{ MSG_ORIG(MSG_EM_MIPS_ALT1),		EM_MIPS },
8275088Sab196087 	{ MSG_ORIG(MSG_EM_MIPS_ALT2),		EM_MIPS },
8285088Sab196087 
8295088Sab196087 	{ MSG_ORIG(MSG_EM_S370),		EM_S370 },
8305088Sab196087 	{ MSG_ORIG(MSG_EM_S370_ALT1),		EM_S370 },
8315088Sab196087 
8325088Sab196087 	{ MSG_ORIG(MSG_EM_MIPS_RS3_LE),		EM_MIPS_RS3_LE },
8335088Sab196087 	{ MSG_ORIG(MSG_EM_MIPS_RS3_LE_ALT1),	EM_MIPS_RS3_LE },
8345088Sab196087 	{ MSG_ORIG(MSG_EM_MIPS_RS3_LE_ALT2),	EM_MIPS_RS3_LE },
8355088Sab196087 
8365088Sab196087 	{ MSG_ORIG(MSG_EM_RS6000),		EM_RS6000 },
8375088Sab196087 	{ MSG_ORIG(MSG_EM_RS6000_ALT1),		EM_RS6000 },
8385088Sab196087 
8395088Sab196087 	{ MSG_ORIG(MSG_EM_PA_RISC),		EM_PA_RISC },
8405088Sab196087 	{ MSG_ORIG(MSG_EM_PA_RISC_ALT1),	EM_PA_RISC },
8415088Sab196087 
8425088Sab196087 	{ MSG_ORIG(MSG_EM_NCUBE),		EM_nCUBE },
8435088Sab196087 	{ MSG_ORIG(MSG_EM_NCUBE_ALT1),		EM_nCUBE },
8445088Sab196087 
8455088Sab196087 	{ MSG_ORIG(MSG_EM_VPP500),		EM_VPP500 },
8465088Sab196087 	{ MSG_ORIG(MSG_EM_VPP500_ALT1),		EM_VPP500 },
8475088Sab196087 
8485088Sab196087 	{ MSG_ORIG(MSG_EM_SPARC32PLUS),		EM_SPARC32PLUS },
8495088Sab196087 	{ MSG_ORIG(MSG_EM_SPARC32PLUS_ALT1),	EM_SPARC32PLUS },
8505088Sab196087 
8515088Sab196087 	{ MSG_ORIG(MSG_EM_960),			EM_960 },
8525088Sab196087 	{ MSG_ORIG(MSG_EM_960_ALT1),		EM_960 },
8535088Sab196087 
8545088Sab196087 	{ MSG_ORIG(MSG_EM_PPC),			EM_PPC },
8555088Sab196087 	{ MSG_ORIG(MSG_EM_PPC_ALT1),		EM_PPC },
8565088Sab196087 	{ MSG_ORIG(MSG_EM_PPC_ALT2),		EM_PPC },
8575088Sab196087 
8585088Sab196087 	{ MSG_ORIG(MSG_EM_PPC64),		EM_PPC64 },
8595088Sab196087 	{ MSG_ORIG(MSG_EM_PPC64_ALT1),		EM_PPC64 },
8605088Sab196087 	{ MSG_ORIG(MSG_EM_PPC64_ALT2),		EM_PPC64 },
8615088Sab196087 
8625088Sab196087 	{ MSG_ORIG(MSG_EM_S390),		EM_S390 },
8635088Sab196087 	{ MSG_ORIG(MSG_EM_S390_ALT1),		EM_S390 },
8645088Sab196087 
8655088Sab196087 	{ MSG_ORIG(MSG_EM_V800),		EM_V800 },
8665088Sab196087 	{ MSG_ORIG(MSG_EM_V800_ALT1),		EM_V800 },
8675088Sab196087 
8685088Sab196087 	{ MSG_ORIG(MSG_EM_FR20),		EM_FR20 },
8695088Sab196087 	{ MSG_ORIG(MSG_EM_FR20_ALT1),		EM_FR20 },
8705088Sab196087 
8715088Sab196087 	{ MSG_ORIG(MSG_EM_RH32),		EM_RH32 },
8725088Sab196087 	{ MSG_ORIG(MSG_EM_RH32_ALT1),		EM_RH32 },
8735088Sab196087 
8745088Sab196087 	{ MSG_ORIG(MSG_EM_RCE),			EM_RCE },
8755088Sab196087 	{ MSG_ORIG(MSG_EM_RCE_ALT1),		EM_RCE },
8765088Sab196087 
8775088Sab196087 	{ MSG_ORIG(MSG_EM_ARM),			EM_ARM },
8785088Sab196087 	{ MSG_ORIG(MSG_EM_ARM_ALT1),		EM_ARM },
8795088Sab196087 
8805088Sab196087 	{ MSG_ORIG(MSG_EM_ALPHA),		EM_ALPHA },
8815088Sab196087 	{ MSG_ORIG(MSG_EM_ALPHA_ALT1),		EM_ALPHA },
8825088Sab196087 
8835088Sab196087 	{ MSG_ORIG(MSG_EM_SH),			EM_SH },
8845088Sab196087 	{ MSG_ORIG(MSG_EM_SH_ALT1),		EM_SH },
8855088Sab196087 
8865088Sab196087 	{ MSG_ORIG(MSG_EM_SPARCV9),		EM_SPARCV9 },
8875088Sab196087 	{ MSG_ORIG(MSG_EM_SPARCV9_ALT1),	EM_SPARCV9 },
8885088Sab196087 
8895088Sab196087 	{ MSG_ORIG(MSG_EM_TRICORE),		EM_TRICORE },
8905088Sab196087 	{ MSG_ORIG(MSG_EM_TRICORE_ALT1),	EM_TRICORE },
8915088Sab196087 
8925088Sab196087 	{ MSG_ORIG(MSG_EM_ARC),			EM_ARC },
8935088Sab196087 	{ MSG_ORIG(MSG_EM_ARC_ALT1),		EM_ARC },
8945088Sab196087 
8955088Sab196087 	{ MSG_ORIG(MSG_EM_H8_300),		EM_H8_300 },
8965088Sab196087 	{ MSG_ORIG(MSG_EM_H8_300_ALT1),		EM_H8_300 },
8975088Sab196087 
8985088Sab196087 	{ MSG_ORIG(MSG_EM_H8_300H),		EM_H8_300H },
8995088Sab196087 	{ MSG_ORIG(MSG_EM_H8_300H_ALT1),	EM_H8_300H },
9005088Sab196087 
9015088Sab196087 	{ MSG_ORIG(MSG_EM_H8S),			EM_H8S },
9025088Sab196087 	{ MSG_ORIG(MSG_EM_H8S_ALT1),		EM_H8S },
9035088Sab196087 
9045088Sab196087 	{ MSG_ORIG(MSG_EM_H8_500),		EM_H8_500 },
9055088Sab196087 	{ MSG_ORIG(MSG_EM_H8_500_ALT1),		EM_H8_500 },
9065088Sab196087 
9075088Sab196087 	{ MSG_ORIG(MSG_EM_IA_64),		EM_IA_64 },
9085088Sab196087 	{ MSG_ORIG(MSG_EM_IA_64_ALT1),		EM_IA_64 },
9095088Sab196087 
9105088Sab196087 	{ MSG_ORIG(MSG_EM_MIPS_X),		EM_MIPS_X },
9115088Sab196087 	{ MSG_ORIG(MSG_EM_MIPS_X_ALT1),		EM_MIPS_X },
9125088Sab196087 
9135088Sab196087 	{ MSG_ORIG(MSG_EM_COLDFIRE),		EM_COLDFIRE },
9145088Sab196087 	{ MSG_ORIG(MSG_EM_COLDFIRE_ALT1),	EM_COLDFIRE },
9155088Sab196087 
9165088Sab196087 	{ MSG_ORIG(MSG_EM_68HC12),		EM_68HC12 },
9175088Sab196087 	{ MSG_ORIG(MSG_EM_68HC12_ALT1),		EM_68HC12 },
9185088Sab196087 
9195088Sab196087 	{ MSG_ORIG(MSG_EM_MMA),			EM_MMA },
9205088Sab196087 	{ MSG_ORIG(MSG_EM_MMA_ALT1),		EM_MMA },
9215088Sab196087 
9225088Sab196087 	{ MSG_ORIG(MSG_EM_PCP),			EM_PCP },
9235088Sab196087 	{ MSG_ORIG(MSG_EM_PCP_ALT1),		EM_PCP },
9245088Sab196087 
9255088Sab196087 	{ MSG_ORIG(MSG_EM_NCPU),		EM_NCPU },
9265088Sab196087 	{ MSG_ORIG(MSG_EM_NCPU_ALT1),		EM_NCPU },
9275088Sab196087 
9285088Sab196087 	{ MSG_ORIG(MSG_EM_NDR1),		EM_NDR1 },
9295088Sab196087 	{ MSG_ORIG(MSG_EM_NDR1_ALT1),		EM_NDR1 },
9305088Sab196087 
9315088Sab196087 	{ MSG_ORIG(MSG_EM_STARCORE),		EM_STARCORE },
9325088Sab196087 	{ MSG_ORIG(MSG_EM_STARCORE_ALT1),	EM_STARCORE },
9335088Sab196087 
9345088Sab196087 	{ MSG_ORIG(MSG_EM_ME16),		EM_ME16 },
9355088Sab196087 	{ MSG_ORIG(MSG_EM_ME16_ALT1),		EM_ME16 },
9365088Sab196087 
9375088Sab196087 	{ MSG_ORIG(MSG_EM_ST100),		EM_ST100 },
9385088Sab196087 	{ MSG_ORIG(MSG_EM_ST100_ALT1),		EM_ST100 },
9395088Sab196087 
9405088Sab196087 	{ MSG_ORIG(MSG_EM_TINYJ),		EM_TINYJ },
9415088Sab196087 	{ MSG_ORIG(MSG_EM_TINYJ_ALT1),		EM_TINYJ },
9425088Sab196087 
9435088Sab196087 	{ MSG_ORIG(MSG_EM_AMD64),		EM_AMD64 },
9445088Sab196087 	{ MSG_ORIG(MSG_EM_AMD64_ALT1),		EM_AMD64 },
9455088Sab196087 
9465088Sab196087 	{ MSG_ORIG(MSG_EM_PDSP),		EM_PDSP },
9475088Sab196087 	{ MSG_ORIG(MSG_EM_PDSP_ALT1),		EM_PDSP },
9485088Sab196087 
9495088Sab196087 	{ MSG_ORIG(MSG_EM_FX66),		EM_FX66 },
9505088Sab196087 	{ MSG_ORIG(MSG_EM_FX66_ALT1),		EM_FX66 },
9515088Sab196087 
9525088Sab196087 	{ MSG_ORIG(MSG_EM_ST9PLUS),		EM_ST9PLUS },
9535088Sab196087 	{ MSG_ORIG(MSG_EM_ST9PLUS_ALT1),	EM_ST9PLUS },
9545088Sab196087 
9555088Sab196087 	{ MSG_ORIG(MSG_EM_ST7),			EM_ST7 },
9565088Sab196087 	{ MSG_ORIG(MSG_EM_ST7_ALT1),		EM_ST7 },
9575088Sab196087 
9585088Sab196087 	{ MSG_ORIG(MSG_EM_68HC16),		EM_68HC16 },
9595088Sab196087 	{ MSG_ORIG(MSG_EM_68HC16_ALT1),		EM_68HC16 },
9605088Sab196087 
9615088Sab196087 	{ MSG_ORIG(MSG_EM_68HC11),		EM_68HC11 },
9625088Sab196087 	{ MSG_ORIG(MSG_EM_68HC11_ALT1),		EM_68HC11 },
9635088Sab196087 
9645088Sab196087 	{ MSG_ORIG(MSG_EM_68HC08),		EM_68HC08 },
9655088Sab196087 	{ MSG_ORIG(MSG_EM_68HC08_ALT1),		EM_68HC08 },
9665088Sab196087 
9675088Sab196087 	{ MSG_ORIG(MSG_EM_68HC05),		EM_68HC05 },
9685088Sab196087 	{ MSG_ORIG(MSG_EM_68HC05_ALT1),		EM_68HC05 },
9695088Sab196087 
9705088Sab196087 	{ MSG_ORIG(MSG_EM_SVX),			EM_SVX },
9715088Sab196087 	{ MSG_ORIG(MSG_EM_SVX_ALT1),		EM_SVX },
9725088Sab196087 
9735088Sab196087 	{ MSG_ORIG(MSG_EM_ST19),		EM_ST19 },
9745088Sab196087 	{ MSG_ORIG(MSG_EM_ST19_ALT1),		EM_ST19 },
9755088Sab196087 
9765088Sab196087 	{ MSG_ORIG(MSG_EM_VAX),			EM_VAX },
9775088Sab196087 	{ MSG_ORIG(MSG_EM_VAX_ALT1),		EM_VAX },
9785088Sab196087 
9795088Sab196087 	{ MSG_ORIG(MSG_EM_CRIS),		EM_CRIS },
9805088Sab196087 	{ MSG_ORIG(MSG_EM_CRIS_ALT1),		EM_CRIS },
9815088Sab196087 
9825088Sab196087 	{ MSG_ORIG(MSG_EM_JAVELIN),		EM_JAVELIN },
9835088Sab196087 	{ MSG_ORIG(MSG_EM_JAVELIN_ALT1),	EM_JAVELIN },
9845088Sab196087 
9855088Sab196087 	{ MSG_ORIG(MSG_EM_FIREPATH),		EM_FIREPATH },
9865088Sab196087 	{ MSG_ORIG(MSG_EM_FIREPATH_ALT1),	EM_FIREPATH },
9875088Sab196087 
9885088Sab196087 	{ MSG_ORIG(MSG_EM_ZSP),			EM_ZSP },
9895088Sab196087 	{ MSG_ORIG(MSG_EM_ZSP_ALT1),		EM_ZSP },
9905088Sab196087 
9915088Sab196087 	{ MSG_ORIG(MSG_EM_MMIX),		EM_MMIX },
9925088Sab196087 	{ MSG_ORIG(MSG_EM_MMIX_ALT1),		EM_MMIX },
9935088Sab196087 
9945088Sab196087 	{ MSG_ORIG(MSG_EM_HUANY),		EM_HUANY },
9955088Sab196087 	{ MSG_ORIG(MSG_EM_HUANY_ALT1),		EM_HUANY },
9965088Sab196087 
9975088Sab196087 	{ MSG_ORIG(MSG_EM_PRISM),		EM_PRISM },
9985088Sab196087 	{ MSG_ORIG(MSG_EM_PRISM_ALT1),		EM_PRISM },
9995088Sab196087 
10005088Sab196087 	{ MSG_ORIG(MSG_EM_AVR),			EM_AVR },
10015088Sab196087 	{ MSG_ORIG(MSG_EM_AVR_ALT1),		EM_AVR },
10025088Sab196087 
10035088Sab196087 	{ MSG_ORIG(MSG_EM_FR30),		EM_FR30 },
10045088Sab196087 	{ MSG_ORIG(MSG_EM_FR30_ALT1),		EM_FR30 },
10055088Sab196087 
10065088Sab196087 	{ MSG_ORIG(MSG_EM_D10V),		EM_D10V },
10075088Sab196087 	{ MSG_ORIG(MSG_EM_D10V_ALT1),		EM_D10V },
10085088Sab196087 
10095088Sab196087 	{ MSG_ORIG(MSG_EM_D30V),		EM_D30V },
10105088Sab196087 	{ MSG_ORIG(MSG_EM_D30V_ALT1),		EM_D30V },
10115088Sab196087 
10125088Sab196087 	{ MSG_ORIG(MSG_EM_V850),		EM_V850 },
10135088Sab196087 	{ MSG_ORIG(MSG_EM_V850_ALT1),		EM_V850 },
10145088Sab196087 
10155088Sab196087 	{ MSG_ORIG(MSG_EM_M32R),		EM_M32R },
10165088Sab196087 	{ MSG_ORIG(MSG_EM_M32R_ALT1),		EM_M32R },
10175088Sab196087 
10185088Sab196087 	{ MSG_ORIG(MSG_EM_MN10300),		EM_MN10300 },
10195088Sab196087 	{ MSG_ORIG(MSG_EM_MN10300_ALT1),	EM_MN10300 },
10205088Sab196087 
10215088Sab196087 	{ MSG_ORIG(MSG_EM_MN10200),		EM_MN10200 },
10225088Sab196087 	{ MSG_ORIG(MSG_EM_MN10200_ALT1),	EM_MN10200 },
10235088Sab196087 
10245088Sab196087 	{ MSG_ORIG(MSG_EM_PJ),			EM_PJ },
10255088Sab196087 	{ MSG_ORIG(MSG_EM_PJ_ALT1),		EM_PJ },
10265088Sab196087 
10275088Sab196087 	{ MSG_ORIG(MSG_EM_OPENRISC),		EM_OPENRISC },
10285088Sab196087 	{ MSG_ORIG(MSG_EM_OPENRISC_ALT1),	EM_OPENRISC },
10295088Sab196087 
10305088Sab196087 	{ MSG_ORIG(MSG_EM_ARC_A5),		EM_ARC_A5 },
10315088Sab196087 	{ MSG_ORIG(MSG_EM_ARC_A5_ALT1),		EM_ARC_A5 },
10325088Sab196087 
10335088Sab196087 	{ MSG_ORIG(MSG_EM_XTENSA),		EM_XTENSA },
10345088Sab196087 	{ MSG_ORIG(MSG_EM_XTENSA_ALT1),		EM_XTENSA },
10355088Sab196087 
10365088Sab196087 	{ NULL }
10375088Sab196087 };
10385088Sab196087 #if	(EM_NUM != (EM_XTENSA + 1))
10395088Sab196087 #error	"EM_NUM has grown"
10405088Sab196087 #endif
10415088Sab196087 
10425088Sab196087 
10435088Sab196087 /*
10445088Sab196087  * ELF header ELFOSABI_* values (and common aliases)
10455088Sab196087  */
10465088Sab196087 static elfedit_atoui_sym_t sym_elfosabi[] = {
10475088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_NONE),		ELFOSABI_NONE },
10485088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_NONE_ALT1),	ELFOSABI_NONE },
10495088Sab196087 
10505088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_SYSV),		ELFOSABI_SYSV },
10515088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_SYSV_ALT1),	ELFOSABI_SYSV },
10525088Sab196087 
10535088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_HPUX),		ELFOSABI_HPUX },
10545088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_HPUX_ALT1),	ELFOSABI_HPUX },
10555088Sab196087 
10565088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_NETBSD),	ELFOSABI_NETBSD },
10575088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_NETBSD_ALT1),	ELFOSABI_NETBSD },
10585088Sab196087 
10595088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_LINUX),		ELFOSABI_LINUX },
10605088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_LINUX_ALT1),	ELFOSABI_LINUX },
10615088Sab196087 
10625088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_SOLARIS),	ELFOSABI_SOLARIS },
10635088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_SOLARIS_ALT1),	ELFOSABI_SOLARIS },
10645088Sab196087 
10655088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_AIX),		ELFOSABI_AIX },
10665088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_AIX_ALT1),	ELFOSABI_AIX },
10675088Sab196087 
10685088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_IRIX),		ELFOSABI_IRIX },
10695088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_IRIX_ALT1),	ELFOSABI_IRIX },
10705088Sab196087 
10715088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_FREEBSD),	ELFOSABI_FREEBSD },
10725088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_FREEBSD_ALT1),	ELFOSABI_FREEBSD },
10735088Sab196087 
10745088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_TRU64),		ELFOSABI_TRU64 },
10755088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_TRU64_ALT1),	ELFOSABI_TRU64 },
10765088Sab196087 
10775088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_MODESTO),	ELFOSABI_MODESTO },
10785088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_MODESTO_ALT1),	ELFOSABI_MODESTO },
10795088Sab196087 
10805088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_OPENBSD),	ELFOSABI_OPENBSD },
10815088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_OPENBSD_ALT1),	ELFOSABI_OPENBSD },
10825088Sab196087 
10835088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_OPENVMS),	ELFOSABI_OPENVMS },
10845088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_OPENVMS_ALT1),	ELFOSABI_OPENVMS },
10855088Sab196087 
10865088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_NSK),		ELFOSABI_NSK },
10875088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_NSK_ALT1),	ELFOSABI_NSK },
10885088Sab196087 
10895088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_AROS),		ELFOSABI_AROS },
10905088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_AROS_ALT1),	ELFOSABI_AROS },
10915088Sab196087 
10925088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_ARM),		ELFOSABI_ARM },
10935088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_ARM_ALT1),	ELFOSABI_ARM },
10945088Sab196087 
10955088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_STANDALONE),	ELFOSABI_STANDALONE },
10965088Sab196087 	{ MSG_ORIG(MSG_ELFOSABI_STANDALONE_ALT1), ELFOSABI_STANDALONE },
10975088Sab196087 
10985088Sab196087 	{ NULL }
10995088Sab196087 };
11005088Sab196087 
11015088Sab196087 
11025088Sab196087 /*
11035088Sab196087  * Program header PT_* type values
11045088Sab196087  */
11055088Sab196087 static elfedit_atoui_sym_t sym_pt[] = {
11065088Sab196087 	{ MSG_ORIG(MSG_PT_NULL),		PT_NULL },
11075088Sab196087 	{ MSG_ORIG(MSG_PT_NULL_ALT1),		PT_NULL },
11085088Sab196087 
11095088Sab196087 	{ MSG_ORIG(MSG_PT_LOAD),		PT_LOAD },
11105088Sab196087 	{ MSG_ORIG(MSG_PT_LOAD_ALT1),		PT_LOAD },
11115088Sab196087 
11125088Sab196087 	{ MSG_ORIG(MSG_PT_DYNAMIC),		PT_DYNAMIC },
11135088Sab196087 	{ MSG_ORIG(MSG_PT_DYNAMIC_ALT1),	PT_DYNAMIC },
11145088Sab196087 
11155088Sab196087 	{ MSG_ORIG(MSG_PT_INTERP),		PT_INTERP },
11165088Sab196087 	{ MSG_ORIG(MSG_PT_INTERP_ALT1),		PT_INTERP },
11175088Sab196087 
11185088Sab196087 	{ MSG_ORIG(MSG_PT_NOTE),		PT_NOTE },
11195088Sab196087 	{ MSG_ORIG(MSG_PT_NOTE_ALT1),		PT_NOTE },
11205088Sab196087 
11215088Sab196087 	{ MSG_ORIG(MSG_PT_SHLIB),		PT_SHLIB },
11225088Sab196087 	{ MSG_ORIG(MSG_PT_SHLIB_ALT1),		PT_SHLIB },
11235088Sab196087 
11245088Sab196087 	{ MSG_ORIG(MSG_PT_PHDR),		PT_PHDR },
11255088Sab196087 	{ MSG_ORIG(MSG_PT_PHDR_ALT1),		PT_PHDR },
11265088Sab196087 
11275088Sab196087 	{ MSG_ORIG(MSG_PT_TLS),			PT_TLS },
11285088Sab196087 	{ MSG_ORIG(MSG_PT_TLS_ALT1),		PT_TLS },
11295088Sab196087 
11305088Sab196087 	{ MSG_ORIG(MSG_PT_SUNW_UNWIND),		PT_SUNW_UNWIND },
11315088Sab196087 	{ MSG_ORIG(MSG_PT_SUNW_UNWIND_ALT1),	PT_SUNW_UNWIND },
11325088Sab196087 
11335088Sab196087 	{ MSG_ORIG(MSG_PT_SUNWBSS),		PT_SUNWBSS },
11345088Sab196087 	{ MSG_ORIG(MSG_PT_SUNWBSS_ALT1),	PT_SUNWBSS },
11355088Sab196087 
11365088Sab196087 	{ MSG_ORIG(MSG_PT_SUNWSTACK),		PT_SUNWSTACK },
11375088Sab196087 	{ MSG_ORIG(MSG_PT_SUNWSTACK_ALT1),	PT_SUNWSTACK },
11385088Sab196087 
11395088Sab196087 	{ MSG_ORIG(MSG_PT_SUNWDTRACE),		PT_SUNWDTRACE },
11405088Sab196087 	{ MSG_ORIG(MSG_PT_SUNWDTRACE_ALT1),	PT_SUNWDTRACE },
11415088Sab196087 
11425088Sab196087 	{ MSG_ORIG(MSG_PT_SUNWCAP),		PT_SUNWCAP },
11435088Sab196087 	{ MSG_ORIG(MSG_PT_SUNWCAP_ALT1),	PT_SUNWCAP },
11445088Sab196087 
11455088Sab196087 	{ NULL }
11465088Sab196087 };
11475088Sab196087 
11485088Sab196087 
11495088Sab196087 /*
11505088Sab196087  * Program header PF_* flag values
11515088Sab196087  */
11525088Sab196087 static elfedit_atoui_sym_t sym_pf[] = {
11535088Sab196087 	{ MSG_ORIG(MSG_PF_X),			PF_X },
11545088Sab196087 	{ MSG_ORIG(MSG_PF_X_ALT1),		PF_X },
11555088Sab196087 
11565088Sab196087 	{ MSG_ORIG(MSG_PF_W),			PF_W },
11575088Sab196087 	{ MSG_ORIG(MSG_PF_W_ALT1),		PF_W },
11585088Sab196087 
11595088Sab196087 	{ MSG_ORIG(MSG_PF_R),			PF_R },
11605088Sab196087 	{ MSG_ORIG(MSG_PF_R_ALT1),		PF_R },
11615088Sab196087 
11625088Sab196087 	{ NULL }
11635088Sab196087 };
11645088Sab196087 
11655088Sab196087 
11665088Sab196087 /*
11675088Sab196087  * Section header SHF_* flag values
11685088Sab196087  */
11695088Sab196087 static elfedit_atoui_sym_t sym_shf[] = {
11705088Sab196087 	{ MSG_ORIG(MSG_SHF_WRITE),		SHF_WRITE },
11715088Sab196087 	{ MSG_ORIG(MSG_SHF_WRITE_ALT1),		SHF_WRITE },
11725088Sab196087 
11735088Sab196087 	{ MSG_ORIG(MSG_SHF_ALLOC),		SHF_ALLOC },
11745088Sab196087 	{ MSG_ORIG(MSG_SHF_ALLOC_ALT1),		SHF_ALLOC },
11755088Sab196087 
11765088Sab196087 	{ MSG_ORIG(MSG_SHF_EXECINSTR),		SHF_EXECINSTR },
11775088Sab196087 	{ MSG_ORIG(MSG_SHF_EXECINSTR_ALT1),	SHF_EXECINSTR },
11785088Sab196087 
11795088Sab196087 	{ MSG_ORIG(MSG_SHF_MERGE),		SHF_MERGE },
11805088Sab196087 	{ MSG_ORIG(MSG_SHF_MERGE_ALT1),		SHF_MERGE },
11815088Sab196087 
11825088Sab196087 	{ MSG_ORIG(MSG_SHF_STRINGS),		SHF_STRINGS },
11835088Sab196087 	{ MSG_ORIG(MSG_SHF_STRINGS_ALT1),	SHF_STRINGS },
11845088Sab196087 
11855088Sab196087 	{ MSG_ORIG(MSG_SHF_INFO_LINK),		SHF_INFO_LINK },
11865088Sab196087 	{ MSG_ORIG(MSG_SHF_INFO_LINK_ALT1),	SHF_INFO_LINK },
11875088Sab196087 
11885088Sab196087 	{ MSG_ORIG(MSG_SHF_LINK_ORDER),		SHF_LINK_ORDER },
11895088Sab196087 	{ MSG_ORIG(MSG_SHF_LINK_ORDER_ALT1),	SHF_LINK_ORDER },
11905088Sab196087 
11915088Sab196087 	{ MSG_ORIG(MSG_SHF_OS_NONCONFORMING),	SHF_OS_NONCONFORMING },
11925088Sab196087 	{ MSG_ORIG(MSG_SHF_OS_NONCONFORMING_ALT1), SHF_OS_NONCONFORMING },
11935088Sab196087 
11945088Sab196087 	{ MSG_ORIG(MSG_SHF_GROUP),		SHF_GROUP },
11955088Sab196087 	{ MSG_ORIG(MSG_SHF_GROUP_ALT1),		SHF_GROUP },
11965088Sab196087 
11975088Sab196087 	{ MSG_ORIG(MSG_SHF_TLS),		SHF_TLS },
11985088Sab196087 	{ MSG_ORIG(MSG_SHF_TLS_ALT1),		SHF_TLS },
11995088Sab196087 
12005088Sab196087 	{ NULL }
12015088Sab196087 };
12025088Sab196087 
12035088Sab196087 /*
12045088Sab196087  * ELF symbol bindings (st_info ELF_ST_BIND)
12055088Sab196087  */
12065088Sab196087 static elfedit_atoui_sym_t sym_stb[] = {
12075088Sab196087 	{ MSG_ORIG(MSG_STB_LOCAL),		STB_LOCAL },
12085088Sab196087 	{ MSG_ORIG(MSG_STB_LOCAL_ALT1),		STB_LOCAL },
12095088Sab196087 
12105088Sab196087 	{ MSG_ORIG(MSG_STB_GLOBAL),		STB_GLOBAL },
12115088Sab196087 	{ MSG_ORIG(MSG_STB_GLOBAL_ALT1),	STB_GLOBAL },
12125088Sab196087 
12135088Sab196087 	{ MSG_ORIG(MSG_STB_WEAK),		STB_WEAK },
12145088Sab196087 	{ MSG_ORIG(MSG_STB_WEAK_ALT1),		STB_WEAK },
12155088Sab196087 
12165088Sab196087 	{ NULL }
12175088Sab196087 };
12185088Sab196087 
12195088Sab196087 /*
12205088Sab196087  * ELF symbol types (st_info ELF_ST_TYPE)
12215088Sab196087  */
12225088Sab196087 static elfedit_atoui_sym_t sym_stt[] = {
12235088Sab196087 	{ MSG_ORIG(MSG_STT_NOTYPE),		STT_NOTYPE },
12245088Sab196087 	{ MSG_ORIG(MSG_STT_NOTYPE_ALT1),	STT_NOTYPE },
12255088Sab196087 
12265088Sab196087 	{ MSG_ORIG(MSG_STT_OBJECT),		STT_OBJECT },
12275088Sab196087 	{ MSG_ORIG(MSG_STT_OBJECT_ALT1),	STT_OBJECT },
12285088Sab196087 
12295088Sab196087 	{ MSG_ORIG(MSG_STT_FUNC),		STT_FUNC },
12305088Sab196087 	{ MSG_ORIG(MSG_STT_FUNC_ALT1),		STT_FUNC },
12315088Sab196087 
12325088Sab196087 	{ MSG_ORIG(MSG_STT_SECTION),		STT_SECTION },
12335088Sab196087 	{ MSG_ORIG(MSG_STT_SECTION_ALT1),	STT_SECTION },
12345088Sab196087 
12355088Sab196087 	{ MSG_ORIG(MSG_STT_FILE),		STT_FILE },
12365088Sab196087 	{ MSG_ORIG(MSG_STT_FILE_ALT1),		STT_FILE },
12375088Sab196087 
12385088Sab196087 	{ MSG_ORIG(MSG_STT_COMMON),		STT_COMMON },
12395088Sab196087 	{ MSG_ORIG(MSG_STT_COMMON_ALT1),	STT_COMMON },
12405088Sab196087 
12415088Sab196087 	{ MSG_ORIG(MSG_STT_TLS),		STT_TLS },
12425088Sab196087 	{ MSG_ORIG(MSG_STT_TLS_ALT1),		STT_TLS },
12435088Sab196087 
12445088Sab196087 	{ NULL }
12455088Sab196087 };
12465088Sab196087 
12475088Sab196087 /*
12485088Sab196087  * ELF symbol visibility (st_other ELF_ST_VISIBILITY)
12495088Sab196087  */
12505088Sab196087 static elfedit_atoui_sym_t sym_stv[] = {
12515088Sab196087 	{ MSG_ORIG(MSG_STV_DEFAULT),		STV_DEFAULT },
12525088Sab196087 	{ MSG_ORIG(MSG_STV_DEFAULT_ALT1),	STV_DEFAULT },
12535088Sab196087 
12545088Sab196087 	{ MSG_ORIG(MSG_STV_INTERNAL),		STV_INTERNAL },
12555088Sab196087 	{ MSG_ORIG(MSG_STV_INTERNAL_ALT1),	STV_INTERNAL },
12565088Sab196087 
12575088Sab196087 	{ MSG_ORIG(MSG_STV_HIDDEN),		STV_HIDDEN },
12585088Sab196087 	{ MSG_ORIG(MSG_STV_HIDDEN_ALT1),	STV_HIDDEN },
12595088Sab196087 
12605088Sab196087 	{ MSG_ORIG(MSG_STV_PROTECTED),		STV_PROTECTED },
12615088Sab196087 	{ MSG_ORIG(MSG_STV_PROTECTED_ALT1),	STV_PROTECTED },
12625088Sab196087 
12635220Srie 	{ MSG_ORIG(MSG_STV_EXPORTED),		STV_EXPORTED },
12645220Srie 	{ MSG_ORIG(MSG_STV_EXPORTED_ALT1),	STV_EXPORTED },
12655220Srie 
12665220Srie 	{ MSG_ORIG(MSG_STV_SINGLETON),		STV_SINGLETON },
12675220Srie 	{ MSG_ORIG(MSG_STV_SINGLETON_ALT1),	STV_SINGLETON },
12685220Srie 
12695220Srie 	{ MSG_ORIG(MSG_STV_ELIMINATE),		STV_ELIMINATE },
12705220Srie 	{ MSG_ORIG(MSG_STV_ELIMINATE_ALT1),	STV_ELIMINATE },
12715220Srie 
12725088Sab196087 	{ NULL }
12735088Sab196087 };
12745088Sab196087 
12755088Sab196087 /*
12765088Sab196087  * ELF syminfo SYMINFO_BT_ special boundto values
12775088Sab196087  */
12785088Sab196087 static elfedit_atoui_sym_t sym_syminfo_bt[] = {
12795088Sab196087 	{ MSG_ORIG(MSG_SYMINFO_BT_SELF),	SYMINFO_BT_SELF },
12805088Sab196087 	{ MSG_ORIG(MSG_SYMINFO_BT_SELF_ALT1),	SYMINFO_BT_SELF },
12815088Sab196087 
12825088Sab196087 	{ MSG_ORIG(MSG_SYMINFO_BT_PARENT),	SYMINFO_BT_PARENT },
12835088Sab196087 	{ MSG_ORIG(MSG_SYMINFO_BT_PARENT_ALT1),	SYMINFO_BT_PARENT },
12845088Sab196087 
12855088Sab196087 	{ MSG_ORIG(MSG_SYMINFO_BT_NONE),	SYMINFO_BT_NONE },
12865088Sab196087 	{ MSG_ORIG(MSG_SYMINFO_BT_NONE_ALT1),	SYMINFO_BT_NONE },
12875088Sab196087 
12885088Sab196087 	{ NULL }
12895088Sab196087 };
12905088Sab196087 
12915088Sab196087 
12925088Sab196087 /*
12935088Sab196087  * ELF syminfo SYMINFO_FLG_ flags
12945088Sab196087  */
12955088Sab196087 static elfedit_atoui_sym_t sym_syminfo_flg[] = {
12965088Sab196087 	{ MSG_ORIG(MSG_SYMINFO_FLG_DIRECT),	SYMINFO_FLG_DIRECT },
12975088Sab196087 	{ MSG_ORIG(MSG_SYMINFO_FLG_DIRECT_ALT1), SYMINFO_FLG_DIRECT },
12985088Sab196087 
12995088Sab196087 	{ MSG_ORIG(MSG_SYMINFO_FLG_COPY),	SYMINFO_FLG_COPY },
13005088Sab196087 	{ MSG_ORIG(MSG_SYMINFO_FLG_COPY_ALT1),	SYMINFO_FLG_COPY },
13015088Sab196087 
13025088Sab196087 	{ MSG_ORIG(MSG_SYMINFO_FLG_LAZYLOAD),	SYMINFO_FLG_LAZYLOAD },
13035088Sab196087 	{ MSG_ORIG(MSG_SYMINFO_FLG_LAZYLOAD_ALT1), SYMINFO_FLG_LAZYLOAD },
13045088Sab196087 
13055088Sab196087 	{ MSG_ORIG(MSG_SYMINFO_FLG_DIRECTBIND),	SYMINFO_FLG_DIRECTBIND },
13065088Sab196087 	{ MSG_ORIG(MSG_SYMINFO_FLG_DIRECTBIND_ALT1), SYMINFO_FLG_DIRECTBIND },
13075088Sab196087 
13085088Sab196087 	{ MSG_ORIG(MSG_SYMINFO_FLG_NOEXTDIRECT), SYMINFO_FLG_NOEXTDIRECT },
13095088Sab196087 	{ MSG_ORIG(MSG_SYMINFO_FLG_NOEXTDIRECT_ALT1), SYMINFO_FLG_NOEXTDIRECT },
13105088Sab196087 
13115088Sab196087 	{ NULL }
13125088Sab196087 };
13135088Sab196087 
13145088Sab196087 
13155088Sab196087 /*
13165088Sab196087  * ELF capabilities tag CA_ values
13175088Sab196087  */
13185088Sab196087 static elfedit_atoui_sym_t sym_ca[] = {
13195088Sab196087 	{ MSG_ORIG(MSG_CA_SUNW_NULL),		CA_SUNW_NULL },
13205088Sab196087 	{ MSG_ORIG(MSG_CA_SUNW_NULL_ALT1),	CA_SUNW_NULL },
13215088Sab196087 
13225088Sab196087 	{ MSG_ORIG(MSG_CA_SUNW_HW_1),		CA_SUNW_HW_1 },
13235088Sab196087 	{ MSG_ORIG(MSG_CA_SUNW_HW_1_ALT1),	CA_SUNW_HW_1 },
13245088Sab196087 
13255088Sab196087 	{ MSG_ORIG(MSG_CA_SUNW_SF_1),		CA_SUNW_SF_1 },
13265088Sab196087 	{ MSG_ORIG(MSG_CA_SUNW_SF_1_ALT1),	CA_SUNW_SF_1 },
13275088Sab196087 
13285088Sab196087 	{ NULL }
13295088Sab196087 };
13305088Sab196087 
1331*5565Sab196087 
13325088Sab196087 /*
13335088Sab196087  * AV_386 flags used for CA_SUNW_HW_1 capabilities
1334*5565Sab196087  *
1335*5565Sab196087  * The space for this is reserved at compile time, but the values are
1336*5565Sab196087  * filled in at runtime on demand from the usr/src/common/elfcap code.
1337*5565Sab196087  * Note that we need two slots for every capability, one for the full
1338*5565Sab196087  * string, and another for the informal lowercase version.
13395088Sab196087  */
1340*5565Sab196087 static elfedit_atoui_sym_t sym_av_386[(2 * ELFCAP_NUM_HW1_386) + 1];
13415088Sab196087 
13425088Sab196087 /*
13435088Sab196087  * AV_SPARC flags used for CA_SUNW_HW_1 capabilities
1344*5565Sab196087  *
1345*5565Sab196087  * The space for this is reserved at compile time, but the values are
1346*5565Sab196087  * filled in at runtime on demand from the usr/src/common/elfcap code.
1347*5565Sab196087  * Note that we need two slots for every capability, one for the full
1348*5565Sab196087  * string, and another for the informal lowercase version.
13495088Sab196087  */
1350*5565Sab196087 static elfedit_atoui_sym_t sym_av_sparc[(2 * ELFCAP_NUM_HW1_SPARC) + 1];
13515088Sab196087 
13525088Sab196087 /*
13535088Sab196087  * SF1_SUNW flags used for CA_SUNW_SF_1 capabilities
1354*5565Sab196087  *
1355*5565Sab196087  * The space for this is reserved at compile time, but the values are
1356*5565Sab196087  * filled in at runtime on demand from the usr/src/common/elfcap code.
1357*5565Sab196087  * Note that we need two slots for every capability, one for the full
1358*5565Sab196087  * string, and another for the informal lowercase version.
13595088Sab196087  */
1360*5565Sab196087 static elfedit_atoui_sym_t sym_sf1_sunw[(2 * ELFCAP_NUM_SF1) + 1];
13615088Sab196087 
13625088Sab196087 
13635088Sab196087 
13645088Sab196087 
13655088Sab196087 
13665088Sab196087 
13675088Sab196087 
13685088Sab196087 
13695088Sab196087 /*
13705088Sab196087  * Array of pointers to atoui arrays for each constant type, indexed
13715088Sab196087  * by elfedit_const_t value. The number and order of entries in this
13725088Sab196087  * table must agree with the definition of elfedit_const_t in elfedit.h.
13735088Sab196087  */
13745088Sab196087 static elfedit_atoui_sym_t *sym_table[] = {
13755088Sab196087 	sym_outstyle,		/* 0: ELFEDIT_CONST_OUTSTYLE */
13765088Sab196087 	sym_minus_o_outstyle,	/* 1: ELFEDIT_CONST_OUTSTYLE_MO */
13775088Sab196087 	sym_bool,		/* 2: ELFEDIT_CONST_BOOL */
13785088Sab196087 	sym_shn,		/* 3: ELFEDIT_CONST_SHN */
13795088Sab196087 	sym_sht,		/* 4: ELFEDIT_CONST_SHT */
13805088Sab196087 	sym_sht_strtab,		/* 5: ELFEDIT_CONST_SHT_STRTAB */
13815088Sab196087 	sym_sht_allsymtab,	/* 6: ELFEDIT_CONST_SHT_ALLSYMTAB */
13825088Sab196087 	sym_sht_symtab,		/* 7: ELFEDIT_CONST_SHT_SYMTAB */
13835088Sab196087 	sym_sht_dynsym,		/* 8: ELFEDIT_CONST_SHT_DYNSYM */
13845088Sab196087 	sym_sht_ldynsym,	/* 9: ELFEDIT_CONST_SHT_LDYNSYM */
13855088Sab196087 	sym_dt,			/* 10: ELFEDIT_CONST_DT: Dynamic tags */
13865088Sab196087 	sym_df,			/* 11: ELFEDIT_CONST_DF: DT_FLAGS */
13875088Sab196087 	sym_df_p1,		/* 12: ELFEDIT_CONST_DF_P1: DF_POSFLAG_1 */
13885088Sab196087 	sym_df_1,		/* 13: ELFEDIT_CONST_DF_1: DT_FLAGS_1 */
13895088Sab196087 	sym_dtf_1,		/* 14: ELFEDIT_CONST_DTF_1: DT_FEATURE_1 */
13905088Sab196087 	sym_ei,			/* 15: ELFEDIT_CONST_EI: Ehdr e_ident indexes */
13915088Sab196087 	sym_et,			/* 16: ELFEDIT_CONST_ET: Ehdr obj type */
13925088Sab196087 	sym_elfclass,		/* 17: ELFEDIT_CONST_ELFCLASS: Ehdr class */
13935088Sab196087 	sym_elfdata,		/* 18: ELFEDIT_CONST_ELFDATA: Ehdr endian */
13945088Sab196087 	sym_ef,			/* 19: ELFEDIT_CONST_EF: Ehdr flags */
13955088Sab196087 	sym_ev,			/* 20: ELFEDIT_CONST_EV: Ehdr version */
13965088Sab196087 	sym_em,			/* 21: ELFEDIT_CONST_EM: Ehdr machine */
13975088Sab196087 	sym_elfosabi,		/* 22: ELFEDIT_CONST_ELFOSABI: Ehdr ABI */
13985088Sab196087 	sym_pt,			/* 23: ELFEDIT_CONST_PT: Phdr type */
13995088Sab196087 	sym_pf,			/* 24: ELFEDIT_CONST_PF: Phdr flags */
14005088Sab196087 	sym_shf,		/* 25: ELFEDIT_CONST_SHF: Shdr flags */
14015088Sab196087 	sym_stb,		/* 26: ELFEDIT_CONST_STB: Sym binding */
14025088Sab196087 	sym_stt,		/* 27: ELFEDIT_CONST_STT: Sym type */
14035088Sab196087 	sym_stv,		/* 28: ELFEDIT_CONST_STV: Sym visibility */
14045088Sab196087 	sym_syminfo_bt,		/* 29: ELFEDIT_CONST_SYMINFO_BT:Syminfo bndto */
14055088Sab196087 	sym_syminfo_flg,	/* 30: ELFEDIT_CONST_SYMINFO_FLG:Syminfo flag */
14065088Sab196087 	sym_ca,			/* 31: ELFEDIT_CONST_CA: Capabilities tags */
1407*5565Sab196087 	NULL,			/* 32: ELFEDIT_CONST_AV_386: X86 HW caps */
1408*5565Sab196087 	NULL,			/* 33: ELFEDIT_CONST_AV_SPARC: sparc HW caps */
1409*5565Sab196087 	NULL,			/* 34: ELFEDIT_CONST_SF1_SUNW: software caps */
14105088Sab196087 };
14115088Sab196087 
14125088Sab196087 
14135088Sab196087 
14145088Sab196087 
14155088Sab196087 
14165088Sab196087 
14175088Sab196087 
14185088Sab196087 /*
1419*5565Sab196087  * Fill in the specified hardware/software capability array
1420*5565Sab196087  * with data from usr/src/common/elfcap.
1421*5565Sab196087  *
1422*5565Sab196087  * entry:
1423*5565Sab196087  *	const_type - Index of constant item being filled
1424*5565Sab196087  *	arr - elfedit_atoui_sym_t array to be filled
1425*5565Sab196087  *	desc - Array of capability descriptors from elfcap
1426*5565Sab196087  *	cnt - # of capability descriptors.
1427*5565Sab196087  *
1428*5565Sab196087  * exit:
1429*5565Sab196087  *	arr is expected to have [(2 * cnt) + 1] elements, all zero filled.
1430*5565Sab196087  *	For each descriptor, 2 array elements are filled in. The first one
1431*5565Sab196087  *	has the full name, and the second has the lowecase informal version.
1432*5565Sab196087  *	The final element of arr is left as NULL, to serve as termination.
1433*5565Sab196087  */
1434*5565Sab196087 static void
1435*5565Sab196087 fill_capability_array(elfedit_const_t const_type,
1436*5565Sab196087     elfedit_atoui_sym_t *arr, const elfcap_desc_t *desc, size_t cnt)
1437*5565Sab196087 {
1438*5565Sab196087 	sym_table[const_type] = arr;
1439*5565Sab196087 
1440*5565Sab196087 	for (; cnt-- > 0; desc++) {
1441*5565Sab196087 		/*
1442*5565Sab196087 		 * Ignore "placeholder" items. These represent
1443*5565Sab196087 		 * unallocated holes in the capability bits.
1444*5565Sab196087 		 */
1445*5565Sab196087 		if (desc->c_val == 0)
1446*5565Sab196087 			continue;
1447*5565Sab196087 
1448*5565Sab196087 		arr->sym_name = desc->c_full.s_str;
1449*5565Sab196087 		arr->sym_value = desc->c_val;
1450*5565Sab196087 		arr++;
1451*5565Sab196087 
1452*5565Sab196087 		arr->sym_name = desc->c_lc.s_str;
1453*5565Sab196087 		arr->sym_value = desc->c_val;
1454*5565Sab196087 		arr++;
1455*5565Sab196087 	}
1456*5565Sab196087 
1457*5565Sab196087 }
1458*5565Sab196087 
1459*5565Sab196087 
1460*5565Sab196087 
1461*5565Sab196087 /*
14625088Sab196087  * Given an elfedit_const_t value, return the array of elfedit_atoui_sym_t
14635088Sab196087  * entries that it represents.
14645088Sab196087  */
14655088Sab196087 elfedit_atoui_sym_t *
14665088Sab196087 elfedit_const_to_atoui(elfedit_const_t const_type)
14675088Sab196087 {
14685088Sab196087 	if ((const_type < 0) ||
14695088Sab196087 	    (const_type >= (sizeof (sym_table) / sizeof (sym_table[0]))))
14705088Sab196087 		elfedit_msg(ELFEDIT_MSG_ERR, MSG_INTL(MSG_ERR_BADCONST));
14715088Sab196087 
1472*5565Sab196087 	/* Fill capability constant array on demand? */
1473*5565Sab196087 	switch (const_type) {
1474*5565Sab196087 	case ELFEDIT_CONST_AV_386:
1475*5565Sab196087 		if (sym_table[ELFEDIT_CONST_AV_386] == NULL)
1476*5565Sab196087 			fill_capability_array(ELFEDIT_CONST_AV_386,
1477*5565Sab196087 			    sym_av_386, elfcap_getdesc_hw1_386(),
1478*5565Sab196087 			    ELFCAP_NUM_HW1_386);
1479*5565Sab196087 		break;
1480*5565Sab196087 	case ELFEDIT_CONST_AV_SPARC:
1481*5565Sab196087 		if (sym_table[ELFEDIT_CONST_AV_SPARC] == NULL)
1482*5565Sab196087 			fill_capability_array(ELFEDIT_CONST_AV_SPARC,
1483*5565Sab196087 			    sym_av_sparc, elfcap_getdesc_hw1_sparc(),
1484*5565Sab196087 			    ELFCAP_NUM_HW1_SPARC);
1485*5565Sab196087 		break;
1486*5565Sab196087 	case ELFEDIT_CONST_SF1_SUNW:
1487*5565Sab196087 		if (sym_table[ELFEDIT_CONST_SF1_SUNW] == NULL)
1488*5565Sab196087 			fill_capability_array(ELFEDIT_CONST_SF1_SUNW,
1489*5565Sab196087 			    sym_sf1_sunw, elfcap_getdesc_sf1(), ELFCAP_NUM_SF1);
1490*5565Sab196087 		break;
1491*5565Sab196087 	}
1492*5565Sab196087 
14935088Sab196087 	return (sym_table[const_type]);
14945088Sab196087 }
14955088Sab196087 
14965088Sab196087 
14975088Sab196087 
14985088Sab196087 /*
14995088Sab196087  * Return the elfedit_atoui_t array that corresponds to the
15005088Sab196087  * CA_SUNW_HW_1 hardware capabiliies field for a given
15015088Sab196087  * machine type.
15025088Sab196087  *
15035088Sab196087  * This routine will return NULL if there is no definition for the
15045088Sab196087  * machine specified.
15055088Sab196087  */
15065088Sab196087 elfedit_atoui_sym_t *
15075088Sab196087 elfedit_mach_sunw_hw1_to_atoui(int mach)
15085088Sab196087 {
15095088Sab196087 	switch (mach) {
15105088Sab196087 	case EM_386:
15115088Sab196087 	case EM_486:
15125088Sab196087 	case EM_AMD64:
15135088Sab196087 		return (elfedit_const_to_atoui(ELFEDIT_CONST_AV_386));
15145088Sab196087 
15155088Sab196087 	case EM_SPARC:
15165088Sab196087 	case EM_SPARC32PLUS:
15175088Sab196087 	case EM_SPARCV9:
15185088Sab196087 		return (elfedit_const_to_atoui(ELFEDIT_CONST_AV_SPARC));
15195088Sab196087 	}
15205088Sab196087 
15215088Sab196087 	/* A machine we don't know about */
15225088Sab196087 	return (NULL);
15235088Sab196087 }
1524