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