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