1*5088Sab196087 /* 2*5088Sab196087 * CDDL HEADER START 3*5088Sab196087 * 4*5088Sab196087 * The contents of this file are subject to the terms of the 5*5088Sab196087 * Common Development and Distribution License (the "License"). 6*5088Sab196087 * You may not use this file except in compliance with the License. 7*5088Sab196087 * 8*5088Sab196087 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*5088Sab196087 * or http://www.opensolaris.org/os/licensing. 10*5088Sab196087 * See the License for the specific language governing permissions 11*5088Sab196087 * and limitations under the License. 12*5088Sab196087 * 13*5088Sab196087 * When distributing Covered Code, include this CDDL HEADER in each 14*5088Sab196087 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*5088Sab196087 * If applicable, add the following below this CDDL HEADER, with the 16*5088Sab196087 * fields enclosed by brackets "[]" replaced with your own identifying 17*5088Sab196087 * information: Portions Copyright [yyyy] [name of copyright owner] 18*5088Sab196087 * 19*5088Sab196087 * CDDL HEADER END 20*5088Sab196087 */ 21*5088Sab196087 22*5088Sab196087 /* 23*5088Sab196087 * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 24*5088Sab196087 * Use is subject to license terms. 25*5088Sab196087 */ 26*5088Sab196087 #pragma ident "%Z%%M% %I% %E% SMI" 27*5088Sab196087 28*5088Sab196087 #include <stdlib.h> 29*5088Sab196087 #include <stdio.h> 30*5088Sab196087 #include <unistd.h> 31*5088Sab196087 #include <libintl.h> 32*5088Sab196087 #include <libelf.h> 33*5088Sab196087 #include <sys/machelf.h> 34*5088Sab196087 #include <link.h> 35*5088Sab196087 #include <strings.h> 36*5088Sab196087 #include <ctype.h> 37*5088Sab196087 #include <elfedit.h> 38*5088Sab196087 #include <_elfedit.h> 39*5088Sab196087 #include <sys/elf_SPARC.h> 40*5088Sab196087 #include <sys/elf_amd64.h> 41*5088Sab196087 #include <sys/auxv_386.h> 42*5088Sab196087 #include <sys/auxv_SPARC.h> 43*5088Sab196087 #include <msg.h> 44*5088Sab196087 45*5088Sab196087 46*5088Sab196087 47*5088Sab196087 /* 48*5088Sab196087 * This file contains support for mapping well known ELF constants 49*5088Sab196087 * to their numeric values. It is a layer on top of the elfedit_atoui() 50*5088Sab196087 * routines defined in util.c. The idea is that centralizing all the 51*5088Sab196087 * support for such constants will improve consistency between modules, 52*5088Sab196087 * allow for sharing of commonly needed items, and make the modules 53*5088Sab196087 * simpler. 54*5088Sab196087 */ 55*5088Sab196087 56*5088Sab196087 57*5088Sab196087 58*5088Sab196087 59*5088Sab196087 /* 60*5088Sab196087 * elfedit output style, with and without leading -o 61*5088Sab196087 */ 62*5088Sab196087 static elfedit_atoui_sym_t sym_outstyle[] = { 63*5088Sab196087 { MSG_ORIG(MSG_STR_DEFAULT), ELFEDIT_OUTSTYLE_DEFAULT }, 64*5088Sab196087 { MSG_ORIG(MSG_STR_SIMPLE), ELFEDIT_OUTSTYLE_SIMPLE }, 65*5088Sab196087 { MSG_ORIG(MSG_STR_NUM), ELFEDIT_OUTSTYLE_NUM }, 66*5088Sab196087 { NULL } 67*5088Sab196087 }; 68*5088Sab196087 static elfedit_atoui_sym_t sym_minus_o_outstyle[] = { 69*5088Sab196087 { MSG_ORIG(MSG_STR_MINUS_O_DEFAULT), ELFEDIT_OUTSTYLE_DEFAULT }, 70*5088Sab196087 { MSG_ORIG(MSG_STR_MINUS_O_SIMPLE), ELFEDIT_OUTSTYLE_SIMPLE }, 71*5088Sab196087 { MSG_ORIG(MSG_STR_MINUS_O_NUM), ELFEDIT_OUTSTYLE_NUM }, 72*5088Sab196087 { NULL } 73*5088Sab196087 }; 74*5088Sab196087 75*5088Sab196087 76*5088Sab196087 /* 77*5088Sab196087 * Booleans 78*5088Sab196087 */ 79*5088Sab196087 static elfedit_atoui_sym_t sym_bool[] = { 80*5088Sab196087 { MSG_ORIG(MSG_STR_T), 1 }, 81*5088Sab196087 { MSG_ORIG(MSG_STR_F), 0 }, 82*5088Sab196087 { MSG_ORIG(MSG_STR_TRUE), 1 }, 83*5088Sab196087 { MSG_ORIG(MSG_STR_FALSE), 0 }, 84*5088Sab196087 { MSG_ORIG(MSG_STR_ON), 1 }, 85*5088Sab196087 { MSG_ORIG(MSG_STR_OFF), 0 }, 86*5088Sab196087 { MSG_ORIG(MSG_STR_YES), 1 }, 87*5088Sab196087 { MSG_ORIG(MSG_STR_NO), 0 }, 88*5088Sab196087 { MSG_ORIG(MSG_STR_Y), 1 }, 89*5088Sab196087 { MSG_ORIG(MSG_STR_N), 0 }, 90*5088Sab196087 { NULL } 91*5088Sab196087 }; 92*5088Sab196087 93*5088Sab196087 /* 94*5088Sab196087 * ELF section indexes with support for the special index names. 95*5088Sab196087 */ 96*5088Sab196087 static elfedit_atoui_sym_t sym_shn[] = { 97*5088Sab196087 { MSG_ORIG(MSG_SHN_UNDEF), SHN_UNDEF }, 98*5088Sab196087 { MSG_ORIG(MSG_SHN_UNDEF_ALT1), SHN_UNDEF }, 99*5088Sab196087 100*5088Sab196087 { MSG_ORIG(MSG_SHN_SUNW_IGNORE), SHN_SUNW_IGNORE }, 101*5088Sab196087 { MSG_ORIG(MSG_SHN_SUNW_IGNORE_ALT1), SHN_SUNW_IGNORE }, 102*5088Sab196087 103*5088Sab196087 { MSG_ORIG(MSG_SHN_BEFORE), SHN_BEFORE }, 104*5088Sab196087 { MSG_ORIG(MSG_SHN_BEFORE_ALT1), SHN_BEFORE }, 105*5088Sab196087 106*5088Sab196087 { MSG_ORIG(MSG_SHN_AFTER), SHN_AFTER }, 107*5088Sab196087 { MSG_ORIG(MSG_SHN_AFTER_ALT1), SHN_AFTER }, 108*5088Sab196087 109*5088Sab196087 { MSG_ORIG(MSG_SHN_AMD64_LCOMMON), SHN_AMD64_LCOMMON }, 110*5088Sab196087 { MSG_ORIG(MSG_SHN_AMD64_LCOMMON_ALT1), SHN_AMD64_LCOMMON }, 111*5088Sab196087 112*5088Sab196087 { MSG_ORIG(MSG_SHN_ABS), SHN_ABS }, 113*5088Sab196087 { MSG_ORIG(MSG_SHN_ABS_ALT1), SHN_ABS }, 114*5088Sab196087 115*5088Sab196087 { MSG_ORIG(MSG_SHN_COMMON), SHN_COMMON }, 116*5088Sab196087 { MSG_ORIG(MSG_SHN_COMMON_ALT1), SHN_COMMON }, 117*5088Sab196087 118*5088Sab196087 { MSG_ORIG(MSG_SHN_XINDEX), SHN_XINDEX }, 119*5088Sab196087 { MSG_ORIG(MSG_SHN_XINDEX_ALT1), SHN_XINDEX }, 120*5088Sab196087 121*5088Sab196087 { NULL } 122*5088Sab196087 }; 123*5088Sab196087 124*5088Sab196087 /* 125*5088Sab196087 * ELF section types. 126*5088Sab196087 */ 127*5088Sab196087 static elfedit_atoui_sym_t sym_sht[] = { 128*5088Sab196087 { MSG_ORIG(MSG_SHT_NULL), SHT_NULL }, 129*5088Sab196087 { MSG_ORIG(MSG_SHT_NULL_ALT1), SHT_NULL }, 130*5088Sab196087 131*5088Sab196087 { MSG_ORIG(MSG_SHT_PROGBITS), SHT_PROGBITS }, 132*5088Sab196087 { MSG_ORIG(MSG_SHT_PROGBITS_ALT1), SHT_PROGBITS }, 133*5088Sab196087 134*5088Sab196087 { MSG_ORIG(MSG_SHT_SYMTAB), SHT_SYMTAB }, 135*5088Sab196087 { MSG_ORIG(MSG_SHT_SYMTAB_ALT1), SHT_SYMTAB }, 136*5088Sab196087 137*5088Sab196087 { MSG_ORIG(MSG_SHT_STRTAB), SHT_STRTAB }, 138*5088Sab196087 { MSG_ORIG(MSG_SHT_STRTAB_ALT1), SHT_STRTAB }, 139*5088Sab196087 140*5088Sab196087 { MSG_ORIG(MSG_SHT_RELA), SHT_RELA }, 141*5088Sab196087 { MSG_ORIG(MSG_SHT_RELA_ALT1), SHT_RELA }, 142*5088Sab196087 143*5088Sab196087 { MSG_ORIG(MSG_SHT_HASH), SHT_HASH }, 144*5088Sab196087 { MSG_ORIG(MSG_SHT_HASH_ALT1), SHT_HASH }, 145*5088Sab196087 146*5088Sab196087 { MSG_ORIG(MSG_SHT_DYNAMIC), SHT_DYNAMIC }, 147*5088Sab196087 { MSG_ORIG(MSG_SHT_DYNAMIC_ALT1), SHT_DYNAMIC }, 148*5088Sab196087 149*5088Sab196087 { MSG_ORIG(MSG_SHT_NOTE), SHT_NOTE }, 150*5088Sab196087 { MSG_ORIG(MSG_SHT_NOTE_ALT1), SHT_NOTE }, 151*5088Sab196087 152*5088Sab196087 { MSG_ORIG(MSG_SHT_NOBITS), SHT_NOBITS }, 153*5088Sab196087 { MSG_ORIG(MSG_SHT_NOBITS_ALT1), SHT_NOBITS }, 154*5088Sab196087 155*5088Sab196087 { MSG_ORIG(MSG_SHT_REL), SHT_REL }, 156*5088Sab196087 { MSG_ORIG(MSG_SHT_REL_ALT1), SHT_REL }, 157*5088Sab196087 158*5088Sab196087 { MSG_ORIG(MSG_SHT_SHLIB), SHT_SHLIB }, 159*5088Sab196087 { MSG_ORIG(MSG_SHT_SHLIB_ALT1), SHT_SHLIB }, 160*5088Sab196087 161*5088Sab196087 { MSG_ORIG(MSG_SHT_DYNSYM), SHT_DYNSYM }, 162*5088Sab196087 { MSG_ORIG(MSG_SHT_DYNSYM_ALT1), SHT_DYNSYM }, 163*5088Sab196087 164*5088Sab196087 { MSG_ORIG(MSG_SHT_INIT_ARRAY), SHT_INIT_ARRAY }, 165*5088Sab196087 { MSG_ORIG(MSG_SHT_INIT_ARRAY_ALT1), SHT_INIT_ARRAY }, 166*5088Sab196087 167*5088Sab196087 { MSG_ORIG(MSG_SHT_FINI_ARRAY), SHT_FINI_ARRAY }, 168*5088Sab196087 { MSG_ORIG(MSG_SHT_FINI_ARRAY_ALT1), SHT_FINI_ARRAY }, 169*5088Sab196087 170*5088Sab196087 { MSG_ORIG(MSG_SHT_PREINIT_ARRAY), SHT_PREINIT_ARRAY }, 171*5088Sab196087 { MSG_ORIG(MSG_SHT_PREINIT_ARRAY_ALT1), SHT_PREINIT_ARRAY }, 172*5088Sab196087 173*5088Sab196087 { MSG_ORIG(MSG_SHT_GROUP), SHT_GROUP }, 174*5088Sab196087 { MSG_ORIG(MSG_SHT_GROUP_ALT1), SHT_GROUP }, 175*5088Sab196087 176*5088Sab196087 { MSG_ORIG(MSG_SHT_SYMTAB_SHNDX), SHT_SYMTAB_SHNDX }, 177*5088Sab196087 { MSG_ORIG(MSG_SHT_SYMTAB_SHNDX_ALT1), SHT_SYMTAB_SHNDX }, 178*5088Sab196087 179*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_SYMSORT), SHT_SUNW_symsort }, 180*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_SYMSORT_ALT1), SHT_SUNW_symsort }, 181*5088Sab196087 182*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_TLSSORT), SHT_SUNW_tlssort }, 183*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_TLSSORT_ALT1), SHT_SUNW_tlssort }, 184*5088Sab196087 185*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_LDYNSYM), SHT_SUNW_LDYNSYM }, 186*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_LDYNSYM_ALT1), SHT_SUNW_LDYNSYM }, 187*5088Sab196087 188*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_DOF), SHT_SUNW_dof }, 189*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_DOF_ALT1), SHT_SUNW_dof }, 190*5088Sab196087 191*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_CAP), SHT_SUNW_cap }, 192*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_CAP_ALT1), SHT_SUNW_cap }, 193*5088Sab196087 194*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_SIGNATURE), SHT_SUNW_SIGNATURE }, 195*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_SIGNATURE_ALT1), SHT_SUNW_SIGNATURE }, 196*5088Sab196087 197*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_ANNOTATE), SHT_SUNW_ANNOTATE }, 198*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_ANNOTATE_ALT1), SHT_SUNW_ANNOTATE }, 199*5088Sab196087 200*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_DEBUGSTR), SHT_SUNW_DEBUGSTR }, 201*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_DEBUGSTR_ALT1), SHT_SUNW_DEBUGSTR }, 202*5088Sab196087 203*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_DEBUG), SHT_SUNW_DEBUG }, 204*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_DEBUG_ALT1), SHT_SUNW_DEBUG }, 205*5088Sab196087 206*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_MOVE), SHT_SUNW_move }, 207*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_MOVE_ALT1), SHT_SUNW_move }, 208*5088Sab196087 209*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_COMDAT), SHT_SUNW_COMDAT }, 210*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_COMDAT_ALT1), SHT_SUNW_COMDAT }, 211*5088Sab196087 212*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_SYMINFO), SHT_SUNW_syminfo }, 213*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_SYMINFO_ALT1), SHT_SUNW_syminfo }, 214*5088Sab196087 215*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_VERDEF), SHT_SUNW_verdef }, 216*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_VERDEF_ALT1), SHT_SUNW_verdef }, 217*5088Sab196087 218*5088Sab196087 { MSG_ORIG(MSG_SHT_GNU_VERDEF), SHT_GNU_verdef }, 219*5088Sab196087 { MSG_ORIG(MSG_SHT_GNU_VERDEF_ALT1), SHT_GNU_verdef }, 220*5088Sab196087 221*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_VERNEED), SHT_SUNW_verneed }, 222*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_VERNEED_ALT1), SHT_SUNW_verneed }, 223*5088Sab196087 224*5088Sab196087 { MSG_ORIG(MSG_SHT_GNU_VERNEED), SHT_GNU_verneed }, 225*5088Sab196087 { MSG_ORIG(MSG_SHT_GNU_VERNEED_ALT1), SHT_GNU_verneed }, 226*5088Sab196087 227*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_VERSYM), SHT_SUNW_versym }, 228*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_VERSYM_ALT1), SHT_SUNW_versym }, 229*5088Sab196087 230*5088Sab196087 { MSG_ORIG(MSG_SHT_GNU_VERSYM), SHT_GNU_versym }, 231*5088Sab196087 { MSG_ORIG(MSG_SHT_GNU_VERSYM_ALT1), SHT_GNU_versym }, 232*5088Sab196087 233*5088Sab196087 { MSG_ORIG(MSG_SHT_SPARC_GOTDATA), SHT_SPARC_GOTDATA }, 234*5088Sab196087 { MSG_ORIG(MSG_SHT_SPARC_GOTDATA_ALT1), SHT_SPARC_GOTDATA }, 235*5088Sab196087 236*5088Sab196087 { MSG_ORIG(MSG_SHT_AMD64_UNWIND), SHT_AMD64_UNWIND }, 237*5088Sab196087 { MSG_ORIG(MSG_SHT_AMD64_UNWIND_ALT1), SHT_AMD64_UNWIND }, 238*5088Sab196087 239*5088Sab196087 { NULL } 240*5088Sab196087 }; 241*5088Sab196087 242*5088Sab196087 /* 243*5088Sab196087 * ELF section types. 244*5088Sab196087 */ 245*5088Sab196087 static elfedit_atoui_sym_t sym_sht_strtab[] = { 246*5088Sab196087 { MSG_ORIG(MSG_SHT_STRTAB), SHT_STRTAB }, 247*5088Sab196087 { MSG_ORIG(MSG_SHT_STRTAB_ALT1), SHT_STRTAB }, 248*5088Sab196087 249*5088Sab196087 { NULL } 250*5088Sab196087 }; 251*5088Sab196087 252*5088Sab196087 253*5088Sab196087 /* 254*5088Sab196087 * ELF section types for symbol tables 255*5088Sab196087 */ 256*5088Sab196087 static elfedit_atoui_sym_t sym_sht_allsymtab[] = { 257*5088Sab196087 { MSG_ORIG(MSG_SHT_SYMTAB), SHT_SYMTAB }, 258*5088Sab196087 { MSG_ORIG(MSG_SHT_SYMTAB_ALT1), SHT_SYMTAB }, 259*5088Sab196087 260*5088Sab196087 { MSG_ORIG(MSG_SHT_DYNSYM), SHT_DYNSYM }, 261*5088Sab196087 { MSG_ORIG(MSG_SHT_DYNSYM_ALT1), SHT_DYNSYM }, 262*5088Sab196087 263*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_LDYNSYM), SHT_SUNW_LDYNSYM }, 264*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_LDYNSYM_ALT1), SHT_SUNW_LDYNSYM }, 265*5088Sab196087 266*5088Sab196087 { NULL } 267*5088Sab196087 }; 268*5088Sab196087 269*5088Sab196087 /* 270*5088Sab196087 * ELF section types for SHT_SYMTAB 271*5088Sab196087 */ 272*5088Sab196087 static elfedit_atoui_sym_t sym_sht_symtab[] = { 273*5088Sab196087 { MSG_ORIG(MSG_SHT_SYMTAB), SHT_SYMTAB }, 274*5088Sab196087 { MSG_ORIG(MSG_SHT_SYMTAB_ALT1), SHT_SYMTAB }, 275*5088Sab196087 276*5088Sab196087 { NULL } 277*5088Sab196087 }; 278*5088Sab196087 279*5088Sab196087 /* 280*5088Sab196087 * ELF section types for SHT_SYMTAB 281*5088Sab196087 */ 282*5088Sab196087 static elfedit_atoui_sym_t sym_sht_dynsym[] = { 283*5088Sab196087 { MSG_ORIG(MSG_SHT_DYNSYM), SHT_DYNSYM }, 284*5088Sab196087 { MSG_ORIG(MSG_SHT_DYNSYM_ALT1), SHT_DYNSYM }, 285*5088Sab196087 286*5088Sab196087 { NULL } 287*5088Sab196087 }; 288*5088Sab196087 289*5088Sab196087 /* 290*5088Sab196087 * ELF section types for SHT_SUNW_LDYNSYM 291*5088Sab196087 */ 292*5088Sab196087 static elfedit_atoui_sym_t sym_sht_ldynsym[] = { 293*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_LDYNSYM), SHT_SUNW_LDYNSYM }, 294*5088Sab196087 { MSG_ORIG(MSG_SHT_SUNW_LDYNSYM_ALT1), SHT_SUNW_LDYNSYM }, 295*5088Sab196087 296*5088Sab196087 { NULL } 297*5088Sab196087 }; 298*5088Sab196087 299*5088Sab196087 /* 300*5088Sab196087 * ELF dynamic tag DT_ values 301*5088Sab196087 */ 302*5088Sab196087 static elfedit_atoui_sym_t sym_dt[] = { 303*5088Sab196087 { MSG_ORIG(MSG_DT_NULL), DT_NULL }, 304*5088Sab196087 { MSG_ORIG(MSG_DT_NULL_ALT1), DT_NULL }, 305*5088Sab196087 306*5088Sab196087 { MSG_ORIG(MSG_DT_NEEDED), DT_NEEDED }, 307*5088Sab196087 { MSG_ORIG(MSG_DT_NEEDED_ALT1), DT_NEEDED }, 308*5088Sab196087 309*5088Sab196087 { MSG_ORIG(MSG_DT_PLTRELSZ), DT_PLTRELSZ }, 310*5088Sab196087 { MSG_ORIG(MSG_DT_PLTRELSZ_ALT1), DT_PLTRELSZ }, 311*5088Sab196087 312*5088Sab196087 { MSG_ORIG(MSG_DT_PLTGOT), DT_PLTGOT }, 313*5088Sab196087 { MSG_ORIG(MSG_DT_PLTGOT_ALT1), DT_PLTGOT }, 314*5088Sab196087 315*5088Sab196087 { MSG_ORIG(MSG_DT_HASH), DT_HASH }, 316*5088Sab196087 { MSG_ORIG(MSG_DT_HASH_ALT1), DT_HASH }, 317*5088Sab196087 318*5088Sab196087 { MSG_ORIG(MSG_DT_STRTAB), DT_STRTAB }, 319*5088Sab196087 { MSG_ORIG(MSG_DT_STRTAB_ALT1), DT_STRTAB }, 320*5088Sab196087 321*5088Sab196087 { MSG_ORIG(MSG_DT_SYMTAB), DT_SYMTAB }, 322*5088Sab196087 { MSG_ORIG(MSG_DT_SYMTAB_ALT1), DT_SYMTAB }, 323*5088Sab196087 324*5088Sab196087 { MSG_ORIG(MSG_DT_RELA), DT_RELA }, 325*5088Sab196087 { MSG_ORIG(MSG_DT_RELA_ALT1), DT_RELA }, 326*5088Sab196087 327*5088Sab196087 { MSG_ORIG(MSG_DT_RELASZ), DT_RELASZ }, 328*5088Sab196087 { MSG_ORIG(MSG_DT_RELASZ_ALT1), DT_RELASZ }, 329*5088Sab196087 330*5088Sab196087 { MSG_ORIG(MSG_DT_RELAENT), DT_RELAENT }, 331*5088Sab196087 { MSG_ORIG(MSG_DT_RELAENT_ALT1), DT_RELAENT }, 332*5088Sab196087 333*5088Sab196087 { MSG_ORIG(MSG_DT_STRSZ), DT_STRSZ }, 334*5088Sab196087 { MSG_ORIG(MSG_DT_STRSZ_ALT1), DT_STRSZ }, 335*5088Sab196087 336*5088Sab196087 { MSG_ORIG(MSG_DT_SYMENT), DT_SYMENT }, 337*5088Sab196087 { MSG_ORIG(MSG_DT_SYMENT_ALT1), DT_SYMENT }, 338*5088Sab196087 339*5088Sab196087 { MSG_ORIG(MSG_DT_INIT), DT_INIT }, 340*5088Sab196087 { MSG_ORIG(MSG_DT_INIT_ALT1), DT_INIT }, 341*5088Sab196087 342*5088Sab196087 { MSG_ORIG(MSG_DT_FINI), DT_FINI }, 343*5088Sab196087 { MSG_ORIG(MSG_DT_FINI_ALT1), DT_FINI }, 344*5088Sab196087 345*5088Sab196087 { MSG_ORIG(MSG_DT_SONAME), DT_SONAME }, 346*5088Sab196087 { MSG_ORIG(MSG_DT_SONAME_ALT1), DT_SONAME }, 347*5088Sab196087 348*5088Sab196087 { MSG_ORIG(MSG_DT_RPATH), DT_RPATH }, 349*5088Sab196087 { MSG_ORIG(MSG_DT_RPATH_ALT1), DT_RPATH }, 350*5088Sab196087 351*5088Sab196087 { MSG_ORIG(MSG_DT_SYMBOLIC), DT_SYMBOLIC }, 352*5088Sab196087 { MSG_ORIG(MSG_DT_SYMBOLIC_ALT1), DT_SYMBOLIC }, 353*5088Sab196087 354*5088Sab196087 { MSG_ORIG(MSG_DT_REL), DT_REL }, 355*5088Sab196087 { MSG_ORIG(MSG_DT_REL_ALT1), DT_REL }, 356*5088Sab196087 357*5088Sab196087 { MSG_ORIG(MSG_DT_RELSZ), DT_RELSZ }, 358*5088Sab196087 { MSG_ORIG(MSG_DT_RELSZ_ALT1), DT_RELSZ }, 359*5088Sab196087 360*5088Sab196087 { MSG_ORIG(MSG_DT_RELENT), DT_RELENT }, 361*5088Sab196087 { MSG_ORIG(MSG_DT_RELENT_ALT1), DT_RELENT }, 362*5088Sab196087 363*5088Sab196087 { MSG_ORIG(MSG_DT_PLTREL), DT_PLTREL }, 364*5088Sab196087 { MSG_ORIG(MSG_DT_PLTREL_ALT1), DT_PLTREL }, 365*5088Sab196087 366*5088Sab196087 { MSG_ORIG(MSG_DT_DEBUG), DT_DEBUG }, 367*5088Sab196087 { MSG_ORIG(MSG_DT_DEBUG_ALT1), DT_DEBUG }, 368*5088Sab196087 369*5088Sab196087 { MSG_ORIG(MSG_DT_TEXTREL), DT_TEXTREL }, 370*5088Sab196087 { MSG_ORIG(MSG_DT_TEXTREL_ALT1), DT_TEXTREL }, 371*5088Sab196087 372*5088Sab196087 { MSG_ORIG(MSG_DT_JMPREL), DT_JMPREL }, 373*5088Sab196087 { MSG_ORIG(MSG_DT_JMPREL_ALT1), DT_JMPREL }, 374*5088Sab196087 375*5088Sab196087 { MSG_ORIG(MSG_DT_BIND_NOW), DT_BIND_NOW }, 376*5088Sab196087 { MSG_ORIG(MSG_DT_BIND_NOW_ALT1), DT_BIND_NOW }, 377*5088Sab196087 378*5088Sab196087 { MSG_ORIG(MSG_DT_INIT_ARRAY), DT_INIT_ARRAY }, 379*5088Sab196087 { MSG_ORIG(MSG_DT_INIT_ARRAY_ALT1), DT_INIT_ARRAY }, 380*5088Sab196087 381*5088Sab196087 { MSG_ORIG(MSG_DT_FINI_ARRAY), DT_FINI_ARRAY }, 382*5088Sab196087 { MSG_ORIG(MSG_DT_FINI_ARRAY_ALT1), DT_FINI_ARRAY }, 383*5088Sab196087 384*5088Sab196087 { MSG_ORIG(MSG_DT_INIT_ARRAYSZ), DT_INIT_ARRAYSZ }, 385*5088Sab196087 { MSG_ORIG(MSG_DT_INIT_ARRAYSZ_ALT1), DT_INIT_ARRAYSZ }, 386*5088Sab196087 387*5088Sab196087 { MSG_ORIG(MSG_DT_FINI_ARRAYSZ), DT_FINI_ARRAYSZ }, 388*5088Sab196087 { MSG_ORIG(MSG_DT_FINI_ARRAYSZ_ALT1), DT_FINI_ARRAYSZ }, 389*5088Sab196087 390*5088Sab196087 { MSG_ORIG(MSG_DT_RUNPATH), DT_RUNPATH }, 391*5088Sab196087 { MSG_ORIG(MSG_DT_RUNPATH_ALT1), DT_RUNPATH }, 392*5088Sab196087 393*5088Sab196087 { MSG_ORIG(MSG_DT_FLAGS), DT_FLAGS }, 394*5088Sab196087 { MSG_ORIG(MSG_DT_FLAGS_ALT1), DT_FLAGS }, 395*5088Sab196087 396*5088Sab196087 { MSG_ORIG(MSG_DT_PREINIT_ARRAY), DT_PREINIT_ARRAY }, 397*5088Sab196087 { MSG_ORIG(MSG_DT_PREINIT_ARRAY_ALT1), DT_PREINIT_ARRAY }, 398*5088Sab196087 399*5088Sab196087 { MSG_ORIG(MSG_DT_PREINIT_ARRAYSZ), DT_PREINIT_ARRAYSZ }, 400*5088Sab196087 { MSG_ORIG(MSG_DT_PREINIT_ARRAYSZ_ALT1), DT_PREINIT_ARRAYSZ }, 401*5088Sab196087 402*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_AUXILIARY), DT_SUNW_AUXILIARY }, 403*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_AUXILIARY_ALT1), DT_SUNW_AUXILIARY }, 404*5088Sab196087 405*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_RTLDINF), DT_SUNW_RTLDINF }, 406*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_RTLDINF_ALT1), DT_SUNW_RTLDINF }, 407*5088Sab196087 408*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_FILTER), DT_SUNW_FILTER }, 409*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_FILTER_ALT1), DT_SUNW_FILTER }, 410*5088Sab196087 411*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_CAP), DT_SUNW_CAP }, 412*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_CAP_ALT1), DT_SUNW_CAP }, 413*5088Sab196087 414*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_SYMTAB), DT_SUNW_SYMTAB }, 415*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_SYMTAB_ALT1), DT_SUNW_SYMTAB }, 416*5088Sab196087 417*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_SYMSZ), DT_SUNW_SYMSZ }, 418*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_SYMSZ_ALT1), DT_SUNW_SYMSZ }, 419*5088Sab196087 420*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_SORTENT), DT_SUNW_SORTENT }, 421*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_SORTENT_ALT1), DT_SUNW_SORTENT }, 422*5088Sab196087 423*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_SYMSORT), DT_SUNW_SYMSORT }, 424*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_SYMSORT_ALT1), DT_SUNW_SYMSORT }, 425*5088Sab196087 426*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_SYMSORTSZ), DT_SUNW_SYMSORTSZ }, 427*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_SYMSORTSZ_ALT1), DT_SUNW_SYMSORTSZ }, 428*5088Sab196087 429*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_TLSSORT), DT_SUNW_TLSSORT }, 430*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_TLSSORT_ALT1), DT_SUNW_TLSSORT }, 431*5088Sab196087 432*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_TLSSORTSZ), DT_SUNW_TLSSORTSZ }, 433*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_TLSSORTSZ_ALT1), DT_SUNW_TLSSORTSZ }, 434*5088Sab196087 435*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_STRPAD), DT_SUNW_STRPAD }, 436*5088Sab196087 { MSG_ORIG(MSG_DT_SUNW_STRPAD_ALT1), DT_SUNW_STRPAD }, 437*5088Sab196087 438*5088Sab196087 { MSG_ORIG(MSG_DT_SPARC_REGISTER), DT_SPARC_REGISTER }, 439*5088Sab196087 { MSG_ORIG(MSG_DT_SPARC_REGISTER_ALT1), DT_SPARC_REGISTER }, 440*5088Sab196087 441*5088Sab196087 { MSG_ORIG(MSG_DT_DEPRECATED_SPARC_REGISTER), 442*5088Sab196087 DT_DEPRECATED_SPARC_REGISTER }, 443*5088Sab196087 { MSG_ORIG(MSG_DT_DEPRECATED_SPARC_REGISTER_ALT1), 444*5088Sab196087 DT_DEPRECATED_SPARC_REGISTER }, 445*5088Sab196087 446*5088Sab196087 { MSG_ORIG(MSG_DT_CHECKSUM), DT_CHECKSUM }, 447*5088Sab196087 { MSG_ORIG(MSG_DT_CHECKSUM_ALT1), DT_CHECKSUM }, 448*5088Sab196087 449*5088Sab196087 { MSG_ORIG(MSG_DT_PLTPADSZ), DT_PLTPADSZ }, 450*5088Sab196087 { MSG_ORIG(MSG_DT_PLTPADSZ_ALT1), DT_PLTPADSZ }, 451*5088Sab196087 452*5088Sab196087 { MSG_ORIG(MSG_DT_MOVEENT), DT_MOVEENT }, 453*5088Sab196087 { MSG_ORIG(MSG_DT_MOVEENT_ALT1), DT_MOVEENT }, 454*5088Sab196087 455*5088Sab196087 { MSG_ORIG(MSG_DT_MOVESZ), DT_MOVESZ }, 456*5088Sab196087 { MSG_ORIG(MSG_DT_MOVESZ_ALT1), DT_MOVESZ }, 457*5088Sab196087 458*5088Sab196087 { MSG_ORIG(MSG_DT_FEATURE_1), DT_FEATURE_1 }, 459*5088Sab196087 { MSG_ORIG(MSG_DT_FEATURE_1_ALT1), DT_FEATURE_1 }, 460*5088Sab196087 461*5088Sab196087 { MSG_ORIG(MSG_DT_POSFLAG_1), DT_POSFLAG_1 }, 462*5088Sab196087 { MSG_ORIG(MSG_DT_POSFLAG_1_ALT1), DT_POSFLAG_1 }, 463*5088Sab196087 464*5088Sab196087 { MSG_ORIG(MSG_DT_SYMINSZ), DT_SYMINSZ }, 465*5088Sab196087 { MSG_ORIG(MSG_DT_SYMINSZ_ALT1), DT_SYMINSZ }, 466*5088Sab196087 467*5088Sab196087 { MSG_ORIG(MSG_DT_SYMINENT), DT_SYMINENT }, 468*5088Sab196087 { MSG_ORIG(MSG_DT_SYMINENT_ALT1), DT_SYMINENT }, 469*5088Sab196087 470*5088Sab196087 { MSG_ORIG(MSG_DT_CONFIG), DT_CONFIG }, 471*5088Sab196087 { MSG_ORIG(MSG_DT_CONFIG_ALT1), DT_CONFIG }, 472*5088Sab196087 473*5088Sab196087 { MSG_ORIG(MSG_DT_DEPAUDIT), DT_DEPAUDIT }, 474*5088Sab196087 { MSG_ORIG(MSG_DT_DEPAUDIT_ALT1), DT_DEPAUDIT }, 475*5088Sab196087 476*5088Sab196087 { MSG_ORIG(MSG_DT_AUDIT), DT_AUDIT }, 477*5088Sab196087 { MSG_ORIG(MSG_DT_AUDIT_ALT1), DT_AUDIT }, 478*5088Sab196087 479*5088Sab196087 { MSG_ORIG(MSG_DT_PLTPAD), DT_PLTPAD }, 480*5088Sab196087 { MSG_ORIG(MSG_DT_PLTPAD_ALT1), DT_PLTPAD }, 481*5088Sab196087 482*5088Sab196087 { MSG_ORIG(MSG_DT_MOVETAB), DT_MOVETAB }, 483*5088Sab196087 { MSG_ORIG(MSG_DT_MOVETAB_ALT1), DT_MOVETAB }, 484*5088Sab196087 485*5088Sab196087 { MSG_ORIG(MSG_DT_SYMINFO), DT_SYMINFO }, 486*5088Sab196087 { MSG_ORIG(MSG_DT_SYMINFO_ALT1), DT_SYMINFO }, 487*5088Sab196087 488*5088Sab196087 { MSG_ORIG(MSG_DT_VERSYM), DT_VERSYM }, 489*5088Sab196087 { MSG_ORIG(MSG_DT_VERSYM_ALT1), DT_VERSYM }, 490*5088Sab196087 491*5088Sab196087 { MSG_ORIG(MSG_DT_RELACOUNT), DT_RELACOUNT }, 492*5088Sab196087 { MSG_ORIG(MSG_DT_RELACOUNT_ALT1), DT_RELACOUNT }, 493*5088Sab196087 494*5088Sab196087 { MSG_ORIG(MSG_DT_RELCOUNT), DT_RELCOUNT }, 495*5088Sab196087 { MSG_ORIG(MSG_DT_RELCOUNT_ALT1), DT_RELCOUNT }, 496*5088Sab196087 497*5088Sab196087 { MSG_ORIG(MSG_DT_FLAGS_1), DT_FLAGS_1 }, 498*5088Sab196087 { MSG_ORIG(MSG_DT_FLAGS_1_ALT1), DT_FLAGS_1 }, 499*5088Sab196087 500*5088Sab196087 { MSG_ORIG(MSG_DT_VERDEF), DT_VERDEF }, 501*5088Sab196087 { MSG_ORIG(MSG_DT_VERDEF_ALT1), DT_VERDEF }, 502*5088Sab196087 503*5088Sab196087 { MSG_ORIG(MSG_DT_VERDEFNUM), DT_VERDEFNUM }, 504*5088Sab196087 { MSG_ORIG(MSG_DT_VERDEFNUM_ALT1), DT_VERDEFNUM }, 505*5088Sab196087 506*5088Sab196087 { MSG_ORIG(MSG_DT_VERNEED), DT_VERNEED }, 507*5088Sab196087 { MSG_ORIG(MSG_DT_VERNEED_ALT1), DT_VERNEED }, 508*5088Sab196087 509*5088Sab196087 { MSG_ORIG(MSG_DT_VERNEEDNUM), DT_VERNEEDNUM }, 510*5088Sab196087 { MSG_ORIG(MSG_DT_VERNEEDNUM_ALT1), DT_VERNEEDNUM }, 511*5088Sab196087 512*5088Sab196087 { MSG_ORIG(MSG_DT_AUXILIARY), DT_AUXILIARY }, 513*5088Sab196087 { MSG_ORIG(MSG_DT_AUXILIARY_ALT1), DT_AUXILIARY }, 514*5088Sab196087 515*5088Sab196087 { MSG_ORIG(MSG_DT_USED), DT_USED }, 516*5088Sab196087 { MSG_ORIG(MSG_DT_USED_ALT1), DT_USED }, 517*5088Sab196087 518*5088Sab196087 { MSG_ORIG(MSG_DT_FILTER), DT_FILTER }, 519*5088Sab196087 { MSG_ORIG(MSG_DT_FILTER_ALT1), DT_FILTER }, 520*5088Sab196087 521*5088Sab196087 { NULL } 522*5088Sab196087 }; 523*5088Sab196087 524*5088Sab196087 525*5088Sab196087 /* 526*5088Sab196087 * ELF DT_FLAGS DF_* values 527*5088Sab196087 */ 528*5088Sab196087 static elfedit_atoui_sym_t sym_df[] = { 529*5088Sab196087 { MSG_ORIG(MSG_DF_ORIGIN), DF_ORIGIN }, 530*5088Sab196087 { MSG_ORIG(MSG_DF_ORIGIN_ALT1), DF_ORIGIN }, 531*5088Sab196087 532*5088Sab196087 { MSG_ORIG(MSG_DF_SYMBOLIC), DF_SYMBOLIC }, 533*5088Sab196087 { MSG_ORIG(MSG_DF_SYMBOLIC_ALT1), DF_SYMBOLIC }, 534*5088Sab196087 535*5088Sab196087 { MSG_ORIG(MSG_DF_TEXTREL), DF_TEXTREL }, 536*5088Sab196087 { MSG_ORIG(MSG_DF_TEXTREL_ALT1), DF_TEXTREL }, 537*5088Sab196087 538*5088Sab196087 { MSG_ORIG(MSG_DF_BIND_NOW), DF_BIND_NOW }, 539*5088Sab196087 { MSG_ORIG(MSG_DF_BIND_NOW_ALT1), DF_BIND_NOW }, 540*5088Sab196087 541*5088Sab196087 { MSG_ORIG(MSG_DF_STATIC_TLS), DF_STATIC_TLS }, 542*5088Sab196087 { MSG_ORIG(MSG_DF_STATIC_TLS_ALT1), DF_STATIC_TLS }, 543*5088Sab196087 544*5088Sab196087 { NULL } 545*5088Sab196087 }; 546*5088Sab196087 547*5088Sab196087 548*5088Sab196087 /* 549*5088Sab196087 * ELF DT_POSFLAG_1 DF_P1_* values 550*5088Sab196087 */ 551*5088Sab196087 static elfedit_atoui_sym_t sym_df_p1[] = { 552*5088Sab196087 { MSG_ORIG(MSG_DF_P1_LAZYLOAD), DF_P1_LAZYLOAD }, 553*5088Sab196087 { MSG_ORIG(MSG_DF_P1_LAZYLOAD_ALT1), DF_P1_LAZYLOAD }, 554*5088Sab196087 555*5088Sab196087 { MSG_ORIG(MSG_DF_P1_GROUPPERM), DF_P1_GROUPPERM }, 556*5088Sab196087 { MSG_ORIG(MSG_DF_P1_GROUPPERM_ALT1), DF_P1_GROUPPERM }, 557*5088Sab196087 558*5088Sab196087 { NULL } 559*5088Sab196087 }; 560*5088Sab196087 561*5088Sab196087 562*5088Sab196087 /* 563*5088Sab196087 * ELF DT_FLAGS_1 DF_1_* values 564*5088Sab196087 */ 565*5088Sab196087 static elfedit_atoui_sym_t sym_df_1[] = { 566*5088Sab196087 { MSG_ORIG(MSG_DF_1_NOW), DF_1_NOW }, 567*5088Sab196087 { MSG_ORIG(MSG_DF_1_NOW_ALT1), DF_1_NOW }, 568*5088Sab196087 569*5088Sab196087 { MSG_ORIG(MSG_DF_1_GLOBAL), DF_1_GLOBAL }, 570*5088Sab196087 { MSG_ORIG(MSG_DF_1_GLOBAL_ALT1), DF_1_GLOBAL }, 571*5088Sab196087 572*5088Sab196087 { MSG_ORIG(MSG_DF_1_GROUP), DF_1_GROUP }, 573*5088Sab196087 { MSG_ORIG(MSG_DF_1_GROUP_ALT1), DF_1_GROUP }, 574*5088Sab196087 575*5088Sab196087 { MSG_ORIG(MSG_DF_1_NODELETE), DF_1_NODELETE }, 576*5088Sab196087 { MSG_ORIG(MSG_DF_1_NODELETE_ALT1), DF_1_NODELETE }, 577*5088Sab196087 578*5088Sab196087 { MSG_ORIG(MSG_DF_1_LOADFLTR), DF_1_LOADFLTR }, 579*5088Sab196087 { MSG_ORIG(MSG_DF_1_LOADFLTR_ALT1), DF_1_LOADFLTR }, 580*5088Sab196087 581*5088Sab196087 { MSG_ORIG(MSG_DF_1_INITFIRST), DF_1_INITFIRST }, 582*5088Sab196087 { MSG_ORIG(MSG_DF_1_INITFIRST_ALT1), DF_1_INITFIRST }, 583*5088Sab196087 584*5088Sab196087 { MSG_ORIG(MSG_DF_1_NOOPEN), DF_1_NOOPEN }, 585*5088Sab196087 { MSG_ORIG(MSG_DF_1_NOOPEN_ALT1), DF_1_NOOPEN }, 586*5088Sab196087 587*5088Sab196087 { MSG_ORIG(MSG_DF_1_ORIGIN), DF_1_ORIGIN }, 588*5088Sab196087 { MSG_ORIG(MSG_DF_1_ORIGIN_ALT1), DF_1_ORIGIN }, 589*5088Sab196087 590*5088Sab196087 { MSG_ORIG(MSG_DF_1_DIRECT), DF_1_DIRECT }, 591*5088Sab196087 { MSG_ORIG(MSG_DF_1_DIRECT_ALT1), DF_1_DIRECT }, 592*5088Sab196087 593*5088Sab196087 { MSG_ORIG(MSG_DF_1_TRANS), DF_1_TRANS }, 594*5088Sab196087 { MSG_ORIG(MSG_DF_1_TRANS_ALT1), DF_1_TRANS }, 595*5088Sab196087 596*5088Sab196087 { MSG_ORIG(MSG_DF_1_INTERPOSE), DF_1_INTERPOSE }, 597*5088Sab196087 { MSG_ORIG(MSG_DF_1_INTERPOSE_ALT1), DF_1_INTERPOSE }, 598*5088Sab196087 599*5088Sab196087 { MSG_ORIG(MSG_DF_1_NODEFLIB), DF_1_NODEFLIB }, 600*5088Sab196087 { MSG_ORIG(MSG_DF_1_NODEFLIB_ALT1), DF_1_NODEFLIB }, 601*5088Sab196087 602*5088Sab196087 { MSG_ORIG(MSG_DF_1_NODUMP), DF_1_NODUMP }, 603*5088Sab196087 { MSG_ORIG(MSG_DF_1_NODUMP_ALT1), DF_1_NODUMP }, 604*5088Sab196087 605*5088Sab196087 { MSG_ORIG(MSG_DF_1_CONFALT), DF_1_CONFALT }, 606*5088Sab196087 { MSG_ORIG(MSG_DF_1_CONFALT_ALT1), DF_1_CONFALT }, 607*5088Sab196087 608*5088Sab196087 { MSG_ORIG(MSG_DF_1_ENDFILTEE), DF_1_ENDFILTEE }, 609*5088Sab196087 { MSG_ORIG(MSG_DF_1_ENDFILTEE_ALT1), DF_1_ENDFILTEE }, 610*5088Sab196087 611*5088Sab196087 { MSG_ORIG(MSG_DF_1_DISPRELDNE), DF_1_DISPRELDNE }, 612*5088Sab196087 { MSG_ORIG(MSG_DF_1_DISPRELDNE_ALT1), DF_1_DISPRELDNE }, 613*5088Sab196087 614*5088Sab196087 { MSG_ORIG(MSG_DF_1_DISPRELPND), DF_1_DISPRELPND }, 615*5088Sab196087 { MSG_ORIG(MSG_DF_1_DISPRELPND_ALT1), DF_1_DISPRELPND }, 616*5088Sab196087 617*5088Sab196087 { MSG_ORIG(MSG_DF_1_NODIRECT), DF_1_NODIRECT }, 618*5088Sab196087 { MSG_ORIG(MSG_DF_1_NODIRECT_ALT1), DF_1_NODIRECT }, 619*5088Sab196087 620*5088Sab196087 { MSG_ORIG(MSG_DF_1_IGNMULDEF), DF_1_IGNMULDEF }, 621*5088Sab196087 { MSG_ORIG(MSG_DF_1_IGNMULDEF_ALT1), DF_1_IGNMULDEF }, 622*5088Sab196087 623*5088Sab196087 { MSG_ORIG(MSG_DF_1_NOKSYMS), DF_1_NOKSYMS }, 624*5088Sab196087 { MSG_ORIG(MSG_DF_1_NOKSYMS_ALT1), DF_1_NOKSYMS }, 625*5088Sab196087 626*5088Sab196087 { MSG_ORIG(MSG_DF_1_NOHDR), DF_1_NOHDR }, 627*5088Sab196087 { MSG_ORIG(MSG_DF_1_NOHDR_ALT1), DF_1_NOHDR }, 628*5088Sab196087 629*5088Sab196087 { MSG_ORIG(MSG_DF_1_EDITED), DF_1_EDITED }, 630*5088Sab196087 { MSG_ORIG(MSG_DF_1_EDITED_ALT1), DF_1_EDITED }, 631*5088Sab196087 632*5088Sab196087 { MSG_ORIG(MSG_DF_1_NORELOC), DF_1_NORELOC }, 633*5088Sab196087 { MSG_ORIG(MSG_DF_1_NORELOC_ALT1), DF_1_NORELOC }, 634*5088Sab196087 635*5088Sab196087 { MSG_ORIG(MSG_DF_1_SYMINTPOSE), DF_1_SYMINTPOSE }, 636*5088Sab196087 { MSG_ORIG(MSG_DF_1_SYMINTPOSE_ALT1), DF_1_SYMINTPOSE }, 637*5088Sab196087 638*5088Sab196087 { MSG_ORIG(MSG_DF_1_GLOBAUDIT), DF_1_GLOBAUDIT }, 639*5088Sab196087 { MSG_ORIG(MSG_DF_1_GLOBAUDIT_ALT1), DF_1_GLOBAUDIT }, 640*5088Sab196087 641*5088Sab196087 { NULL } 642*5088Sab196087 }; 643*5088Sab196087 644*5088Sab196087 645*5088Sab196087 /* 646*5088Sab196087 * ELF DT_FEATURE_1 DTF_1_* values 647*5088Sab196087 */ 648*5088Sab196087 static elfedit_atoui_sym_t sym_dtf_1[] = { 649*5088Sab196087 { MSG_ORIG(MSG_DTF_1_PARINIT), DTF_1_PARINIT }, 650*5088Sab196087 { MSG_ORIG(MSG_DTF_1_PARINIT_ALT1), DTF_1_PARINIT }, 651*5088Sab196087 652*5088Sab196087 { MSG_ORIG(MSG_DTF_1_CONFEXP), DTF_1_CONFEXP }, 653*5088Sab196087 { MSG_ORIG(MSG_DTF_1_CONFEXP_ALT1), DTF_1_CONFEXP }, 654*5088Sab196087 655*5088Sab196087 { NULL } 656*5088Sab196087 }; 657*5088Sab196087 658*5088Sab196087 /* 659*5088Sab196087 * ELF header EI_* indexes 660*5088Sab196087 */ 661*5088Sab196087 static elfedit_atoui_sym_t sym_ei[] = { 662*5088Sab196087 { MSG_ORIG(MSG_EI_MAG0), EI_MAG0 }, 663*5088Sab196087 { MSG_ORIG(MSG_EI_MAG0_ALT1), EI_MAG0 }, 664*5088Sab196087 665*5088Sab196087 { MSG_ORIG(MSG_EI_MAG1), EI_MAG1 }, 666*5088Sab196087 { MSG_ORIG(MSG_EI_MAG1_ALT1), EI_MAG1 }, 667*5088Sab196087 668*5088Sab196087 { MSG_ORIG(MSG_EI_MAG2), EI_MAG2 }, 669*5088Sab196087 { MSG_ORIG(MSG_EI_MAG2_ALT1), EI_MAG2 }, 670*5088Sab196087 671*5088Sab196087 { MSG_ORIG(MSG_EI_MAG3), EI_MAG3 }, 672*5088Sab196087 { MSG_ORIG(MSG_EI_MAG3_ALT1), EI_MAG3 }, 673*5088Sab196087 674*5088Sab196087 { MSG_ORIG(MSG_EI_CLASS), EI_CLASS }, 675*5088Sab196087 { MSG_ORIG(MSG_EI_CLASS_ALT1), EI_CLASS }, 676*5088Sab196087 677*5088Sab196087 { MSG_ORIG(MSG_EI_DATA), EI_DATA }, 678*5088Sab196087 { MSG_ORIG(MSG_EI_DATA_ALT1), EI_DATA }, 679*5088Sab196087 680*5088Sab196087 { MSG_ORIG(MSG_EI_VERSION), EI_VERSION }, 681*5088Sab196087 { MSG_ORIG(MSG_EI_VERSION_ALT1), EI_VERSION }, 682*5088Sab196087 683*5088Sab196087 { MSG_ORIG(MSG_EI_OSABI), EI_OSABI }, 684*5088Sab196087 { MSG_ORIG(MSG_EI_OSABI_ALT1), EI_OSABI }, 685*5088Sab196087 686*5088Sab196087 { MSG_ORIG(MSG_EI_ABIVERSION), EI_ABIVERSION }, 687*5088Sab196087 { MSG_ORIG(MSG_EI_ABIVERSION_ALT1), EI_ABIVERSION }, 688*5088Sab196087 689*5088Sab196087 { NULL } 690*5088Sab196087 }; 691*5088Sab196087 692*5088Sab196087 /* 693*5088Sab196087 * ELF header ET_* file type values 694*5088Sab196087 */ 695*5088Sab196087 static elfedit_atoui_sym_t sym_et[] = { 696*5088Sab196087 { MSG_ORIG(MSG_ET_NONE), ET_NONE }, 697*5088Sab196087 { MSG_ORIG(MSG_ET_NONE_ALT1), ET_NONE }, 698*5088Sab196087 699*5088Sab196087 { MSG_ORIG(MSG_ET_REL), ET_REL }, 700*5088Sab196087 { MSG_ORIG(MSG_ET_REL_ALT1), ET_REL }, 701*5088Sab196087 702*5088Sab196087 { MSG_ORIG(MSG_ET_EXEC), ET_EXEC }, 703*5088Sab196087 { MSG_ORIG(MSG_ET_EXEC_ALT1), ET_EXEC }, 704*5088Sab196087 705*5088Sab196087 { MSG_ORIG(MSG_ET_DYN), ET_DYN }, 706*5088Sab196087 { MSG_ORIG(MSG_ET_DYN_ALT1), ET_DYN }, 707*5088Sab196087 708*5088Sab196087 { MSG_ORIG(MSG_ET_CORE), ET_CORE }, 709*5088Sab196087 { MSG_ORIG(MSG_ET_CORE_ALT1), ET_CORE }, 710*5088Sab196087 711*5088Sab196087 { NULL } 712*5088Sab196087 }; 713*5088Sab196087 714*5088Sab196087 /* 715*5088Sab196087 * ELFCLASS 716*5088Sab196087 */ 717*5088Sab196087 static elfedit_atoui_sym_t sym_elfclass[] = { 718*5088Sab196087 { MSG_ORIG(MSG_ELFCLASSNONE), ELFCLASSNONE }, 719*5088Sab196087 { MSG_ORIG(MSG_ELFCLASSNONE_ALT1), ELFCLASSNONE }, 720*5088Sab196087 721*5088Sab196087 { MSG_ORIG(MSG_ELFCLASS32), ELFCLASS32 }, 722*5088Sab196087 { MSG_ORIG(MSG_ELFCLASS32_ALT1), ELFCLASS32 }, 723*5088Sab196087 724*5088Sab196087 { MSG_ORIG(MSG_ELFCLASS64), ELFCLASS64 }, 725*5088Sab196087 { MSG_ORIG(MSG_ELFCLASS64_ALT1), ELFCLASS64 }, 726*5088Sab196087 727*5088Sab196087 { NULL } 728*5088Sab196087 }; 729*5088Sab196087 730*5088Sab196087 /* 731*5088Sab196087 * ELFDATA 732*5088Sab196087 */ 733*5088Sab196087 static elfedit_atoui_sym_t sym_elfdata[] = { 734*5088Sab196087 { MSG_ORIG(MSG_ELFDATANONE), ELFDATANONE }, 735*5088Sab196087 { MSG_ORIG(MSG_ELFDATANONE_ALT1), ELFDATANONE }, 736*5088Sab196087 737*5088Sab196087 { MSG_ORIG(MSG_ELFDATA2LSB), ELFDATA2LSB }, 738*5088Sab196087 { MSG_ORIG(MSG_ELFDATA2LSB_ALT1), ELFDATA2LSB }, 739*5088Sab196087 740*5088Sab196087 { MSG_ORIG(MSG_ELFDATA2MSB), ELFDATA2MSB }, 741*5088Sab196087 { MSG_ORIG(MSG_ELFDATA2MSB_ALT1), ELFDATA2MSB }, 742*5088Sab196087 743*5088Sab196087 { NULL } 744*5088Sab196087 }; 745*5088Sab196087 746*5088Sab196087 /* 747*5088Sab196087 * ELF header EF_* flags 748*5088Sab196087 */ 749*5088Sab196087 static elfedit_atoui_sym_t sym_ef[] = { 750*5088Sab196087 { MSG_ORIG(MSG_EF_SPARC_32PLUS), EF_SPARC_32PLUS }, 751*5088Sab196087 { MSG_ORIG(MSG_EF_SPARC_32PLUS_ALT1), EF_SPARC_32PLUS }, 752*5088Sab196087 753*5088Sab196087 { MSG_ORIG(MSG_EF_SPARC_SUN_US1), EF_SPARC_SUN_US1 }, 754*5088Sab196087 { MSG_ORIG(MSG_EF_SPARC_SUN_US1_ALT1), EF_SPARC_SUN_US1 }, 755*5088Sab196087 756*5088Sab196087 { MSG_ORIG(MSG_EF_SPARC_HAL_R1), EF_SPARC_HAL_R1 }, 757*5088Sab196087 { MSG_ORIG(MSG_EF_SPARC_HAL_R1_ALT1), EF_SPARC_HAL_R1 }, 758*5088Sab196087 759*5088Sab196087 { MSG_ORIG(MSG_EF_SPARC_SUN_US3), EF_SPARC_SUN_US3 }, 760*5088Sab196087 { MSG_ORIG(MSG_EF_SPARC_SUN_US3_ALT1), EF_SPARC_SUN_US3 }, 761*5088Sab196087 762*5088Sab196087 { MSG_ORIG(MSG_EF_SPARCV9_MM), EF_SPARCV9_MM }, 763*5088Sab196087 { MSG_ORIG(MSG_EF_SPARCV9_MM_ALT1), EF_SPARCV9_MM }, 764*5088Sab196087 765*5088Sab196087 { MSG_ORIG(MSG_EF_SPARCV9_TSO), EF_SPARCV9_TSO }, 766*5088Sab196087 { MSG_ORIG(MSG_EF_SPARCV9_TSO_ALT1), EF_SPARCV9_TSO }, 767*5088Sab196087 768*5088Sab196087 { MSG_ORIG(MSG_EF_SPARCV9_PSO), EF_SPARCV9_PSO }, 769*5088Sab196087 { MSG_ORIG(MSG_EF_SPARCV9_PSO_ALT1), EF_SPARCV9_PSO }, 770*5088Sab196087 771*5088Sab196087 { MSG_ORIG(MSG_EF_SPARCV9_RMO), EF_SPARCV9_RMO }, 772*5088Sab196087 { MSG_ORIG(MSG_EF_SPARCV9_RMO_ALT1), EF_SPARCV9_RMO }, 773*5088Sab196087 774*5088Sab196087 { NULL } 775*5088Sab196087 }; 776*5088Sab196087 777*5088Sab196087 /* 778*5088Sab196087 * ELF header EV_* versions 779*5088Sab196087 */ 780*5088Sab196087 static elfedit_atoui_sym_t sym_ev[] = { 781*5088Sab196087 { MSG_ORIG(MSG_EV_NONE), EV_NONE }, 782*5088Sab196087 { MSG_ORIG(MSG_EV_NONE_ALT1), EV_NONE }, 783*5088Sab196087 784*5088Sab196087 { MSG_ORIG(MSG_EV_CURRENT), EV_CURRENT }, 785*5088Sab196087 { MSG_ORIG(MSG_EV_CURRENT_ALT1), EV_CURRENT }, 786*5088Sab196087 787*5088Sab196087 { NULL } 788*5088Sab196087 }; 789*5088Sab196087 790*5088Sab196087 /* 791*5088Sab196087 * ELF EM_* machine types 792*5088Sab196087 */ 793*5088Sab196087 static elfedit_atoui_sym_t sym_em[] = { 794*5088Sab196087 { MSG_ORIG(MSG_EM_NONE), EM_NONE }, 795*5088Sab196087 { MSG_ORIG(MSG_EM_NONE_ALT1), EM_NONE }, 796*5088Sab196087 797*5088Sab196087 { MSG_ORIG(MSG_EM_M32), EM_M32 }, 798*5088Sab196087 { MSG_ORIG(MSG_EM_M32_ALT1), EM_M32 }, 799*5088Sab196087 { MSG_ORIG(MSG_EM_M32_ALT2), EM_M32 }, 800*5088Sab196087 801*5088Sab196087 { MSG_ORIG(MSG_EM_SPARC), EM_SPARC }, 802*5088Sab196087 { MSG_ORIG(MSG_EM_SPARC_ALT1), EM_SPARC }, 803*5088Sab196087 804*5088Sab196087 { MSG_ORIG(MSG_EM_386), EM_386 }, 805*5088Sab196087 { MSG_ORIG(MSG_EM_386_ALT1), EM_386 }, 806*5088Sab196087 { MSG_ORIG(MSG_EM_386_ALT2), EM_386 }, 807*5088Sab196087 808*5088Sab196087 { MSG_ORIG(MSG_EM_68K), EM_68K }, 809*5088Sab196087 { MSG_ORIG(MSG_EM_68K_ALT1), EM_68K }, 810*5088Sab196087 { MSG_ORIG(MSG_EM_68K_ALT2), EM_68K }, 811*5088Sab196087 812*5088Sab196087 { MSG_ORIG(MSG_EM_88K), EM_88K }, 813*5088Sab196087 { MSG_ORIG(MSG_EM_88K_ALT1), EM_88K }, 814*5088Sab196087 { MSG_ORIG(MSG_EM_88K_ALT2), EM_88K }, 815*5088Sab196087 816*5088Sab196087 { MSG_ORIG(MSG_EM_486), EM_486 }, 817*5088Sab196087 { MSG_ORIG(MSG_EM_486_ALT1), EM_486 }, 818*5088Sab196087 { MSG_ORIG(MSG_EM_486_ALT2), EM_486 }, 819*5088Sab196087 820*5088Sab196087 { MSG_ORIG(MSG_EM_860), EM_860 }, 821*5088Sab196087 { MSG_ORIG(MSG_EM_860_ALT1), EM_860 }, 822*5088Sab196087 { MSG_ORIG(MSG_EM_860_ALT2), EM_860 }, 823*5088Sab196087 824*5088Sab196087 { MSG_ORIG(MSG_EM_MIPS), EM_MIPS }, 825*5088Sab196087 { MSG_ORIG(MSG_EM_MIPS_ALT1), EM_MIPS }, 826*5088Sab196087 { MSG_ORIG(MSG_EM_MIPS_ALT2), EM_MIPS }, 827*5088Sab196087 828*5088Sab196087 { MSG_ORIG(MSG_EM_S370), EM_S370 }, 829*5088Sab196087 { MSG_ORIG(MSG_EM_S370_ALT1), EM_S370 }, 830*5088Sab196087 831*5088Sab196087 { MSG_ORIG(MSG_EM_MIPS_RS3_LE), EM_MIPS_RS3_LE }, 832*5088Sab196087 { MSG_ORIG(MSG_EM_MIPS_RS3_LE_ALT1), EM_MIPS_RS3_LE }, 833*5088Sab196087 { MSG_ORIG(MSG_EM_MIPS_RS3_LE_ALT2), EM_MIPS_RS3_LE }, 834*5088Sab196087 835*5088Sab196087 { MSG_ORIG(MSG_EM_RS6000), EM_RS6000 }, 836*5088Sab196087 { MSG_ORIG(MSG_EM_RS6000_ALT1), EM_RS6000 }, 837*5088Sab196087 838*5088Sab196087 { MSG_ORIG(MSG_EM_PA_RISC), EM_PA_RISC }, 839*5088Sab196087 { MSG_ORIG(MSG_EM_PA_RISC_ALT1), EM_PA_RISC }, 840*5088Sab196087 841*5088Sab196087 { MSG_ORIG(MSG_EM_NCUBE), EM_nCUBE }, 842*5088Sab196087 { MSG_ORIG(MSG_EM_NCUBE_ALT1), EM_nCUBE }, 843*5088Sab196087 844*5088Sab196087 { MSG_ORIG(MSG_EM_VPP500), EM_VPP500 }, 845*5088Sab196087 { MSG_ORIG(MSG_EM_VPP500_ALT1), EM_VPP500 }, 846*5088Sab196087 847*5088Sab196087 { MSG_ORIG(MSG_EM_SPARC32PLUS), EM_SPARC32PLUS }, 848*5088Sab196087 { MSG_ORIG(MSG_EM_SPARC32PLUS_ALT1), EM_SPARC32PLUS }, 849*5088Sab196087 850*5088Sab196087 { MSG_ORIG(MSG_EM_960), EM_960 }, 851*5088Sab196087 { MSG_ORIG(MSG_EM_960_ALT1), EM_960 }, 852*5088Sab196087 853*5088Sab196087 { MSG_ORIG(MSG_EM_PPC), EM_PPC }, 854*5088Sab196087 { MSG_ORIG(MSG_EM_PPC_ALT1), EM_PPC }, 855*5088Sab196087 { MSG_ORIG(MSG_EM_PPC_ALT2), EM_PPC }, 856*5088Sab196087 857*5088Sab196087 { MSG_ORIG(MSG_EM_PPC64), EM_PPC64 }, 858*5088Sab196087 { MSG_ORIG(MSG_EM_PPC64_ALT1), EM_PPC64 }, 859*5088Sab196087 { MSG_ORIG(MSG_EM_PPC64_ALT2), EM_PPC64 }, 860*5088Sab196087 861*5088Sab196087 { MSG_ORIG(MSG_EM_S390), EM_S390 }, 862*5088Sab196087 { MSG_ORIG(MSG_EM_S390_ALT1), EM_S390 }, 863*5088Sab196087 864*5088Sab196087 { MSG_ORIG(MSG_EM_V800), EM_V800 }, 865*5088Sab196087 { MSG_ORIG(MSG_EM_V800_ALT1), EM_V800 }, 866*5088Sab196087 867*5088Sab196087 { MSG_ORIG(MSG_EM_FR20), EM_FR20 }, 868*5088Sab196087 { MSG_ORIG(MSG_EM_FR20_ALT1), EM_FR20 }, 869*5088Sab196087 870*5088Sab196087 { MSG_ORIG(MSG_EM_RH32), EM_RH32 }, 871*5088Sab196087 { MSG_ORIG(MSG_EM_RH32_ALT1), EM_RH32 }, 872*5088Sab196087 873*5088Sab196087 { MSG_ORIG(MSG_EM_RCE), EM_RCE }, 874*5088Sab196087 { MSG_ORIG(MSG_EM_RCE_ALT1), EM_RCE }, 875*5088Sab196087 876*5088Sab196087 { MSG_ORIG(MSG_EM_ARM), EM_ARM }, 877*5088Sab196087 { MSG_ORIG(MSG_EM_ARM_ALT1), EM_ARM }, 878*5088Sab196087 879*5088Sab196087 { MSG_ORIG(MSG_EM_ALPHA), EM_ALPHA }, 880*5088Sab196087 { MSG_ORIG(MSG_EM_ALPHA_ALT1), EM_ALPHA }, 881*5088Sab196087 882*5088Sab196087 { MSG_ORIG(MSG_EM_SH), EM_SH }, 883*5088Sab196087 { MSG_ORIG(MSG_EM_SH_ALT1), EM_SH }, 884*5088Sab196087 885*5088Sab196087 { MSG_ORIG(MSG_EM_SPARCV9), EM_SPARCV9 }, 886*5088Sab196087 { MSG_ORIG(MSG_EM_SPARCV9_ALT1), EM_SPARCV9 }, 887*5088Sab196087 888*5088Sab196087 { MSG_ORIG(MSG_EM_TRICORE), EM_TRICORE }, 889*5088Sab196087 { MSG_ORIG(MSG_EM_TRICORE_ALT1), EM_TRICORE }, 890*5088Sab196087 891*5088Sab196087 { MSG_ORIG(MSG_EM_ARC), EM_ARC }, 892*5088Sab196087 { MSG_ORIG(MSG_EM_ARC_ALT1), EM_ARC }, 893*5088Sab196087 894*5088Sab196087 { MSG_ORIG(MSG_EM_H8_300), EM_H8_300 }, 895*5088Sab196087 { MSG_ORIG(MSG_EM_H8_300_ALT1), EM_H8_300 }, 896*5088Sab196087 897*5088Sab196087 { MSG_ORIG(MSG_EM_H8_300H), EM_H8_300H }, 898*5088Sab196087 { MSG_ORIG(MSG_EM_H8_300H_ALT1), EM_H8_300H }, 899*5088Sab196087 900*5088Sab196087 { MSG_ORIG(MSG_EM_H8S), EM_H8S }, 901*5088Sab196087 { MSG_ORIG(MSG_EM_H8S_ALT1), EM_H8S }, 902*5088Sab196087 903*5088Sab196087 { MSG_ORIG(MSG_EM_H8_500), EM_H8_500 }, 904*5088Sab196087 { MSG_ORIG(MSG_EM_H8_500_ALT1), EM_H8_500 }, 905*5088Sab196087 906*5088Sab196087 { MSG_ORIG(MSG_EM_IA_64), EM_IA_64 }, 907*5088Sab196087 { MSG_ORIG(MSG_EM_IA_64_ALT1), EM_IA_64 }, 908*5088Sab196087 909*5088Sab196087 { MSG_ORIG(MSG_EM_MIPS_X), EM_MIPS_X }, 910*5088Sab196087 { MSG_ORIG(MSG_EM_MIPS_X_ALT1), EM_MIPS_X }, 911*5088Sab196087 912*5088Sab196087 { MSG_ORIG(MSG_EM_COLDFIRE), EM_COLDFIRE }, 913*5088Sab196087 { MSG_ORIG(MSG_EM_COLDFIRE_ALT1), EM_COLDFIRE }, 914*5088Sab196087 915*5088Sab196087 { MSG_ORIG(MSG_EM_68HC12), EM_68HC12 }, 916*5088Sab196087 { MSG_ORIG(MSG_EM_68HC12_ALT1), EM_68HC12 }, 917*5088Sab196087 918*5088Sab196087 { MSG_ORIG(MSG_EM_MMA), EM_MMA }, 919*5088Sab196087 { MSG_ORIG(MSG_EM_MMA_ALT1), EM_MMA }, 920*5088Sab196087 921*5088Sab196087 { MSG_ORIG(MSG_EM_PCP), EM_PCP }, 922*5088Sab196087 { MSG_ORIG(MSG_EM_PCP_ALT1), EM_PCP }, 923*5088Sab196087 924*5088Sab196087 { MSG_ORIG(MSG_EM_NCPU), EM_NCPU }, 925*5088Sab196087 { MSG_ORIG(MSG_EM_NCPU_ALT1), EM_NCPU }, 926*5088Sab196087 927*5088Sab196087 { MSG_ORIG(MSG_EM_NDR1), EM_NDR1 }, 928*5088Sab196087 { MSG_ORIG(MSG_EM_NDR1_ALT1), EM_NDR1 }, 929*5088Sab196087 930*5088Sab196087 { MSG_ORIG(MSG_EM_STARCORE), EM_STARCORE }, 931*5088Sab196087 { MSG_ORIG(MSG_EM_STARCORE_ALT1), EM_STARCORE }, 932*5088Sab196087 933*5088Sab196087 { MSG_ORIG(MSG_EM_ME16), EM_ME16 }, 934*5088Sab196087 { MSG_ORIG(MSG_EM_ME16_ALT1), EM_ME16 }, 935*5088Sab196087 936*5088Sab196087 { MSG_ORIG(MSG_EM_ST100), EM_ST100 }, 937*5088Sab196087 { MSG_ORIG(MSG_EM_ST100_ALT1), EM_ST100 }, 938*5088Sab196087 939*5088Sab196087 { MSG_ORIG(MSG_EM_TINYJ), EM_TINYJ }, 940*5088Sab196087 { MSG_ORIG(MSG_EM_TINYJ_ALT1), EM_TINYJ }, 941*5088Sab196087 942*5088Sab196087 { MSG_ORIG(MSG_EM_AMD64), EM_AMD64 }, 943*5088Sab196087 { MSG_ORIG(MSG_EM_AMD64_ALT1), EM_AMD64 }, 944*5088Sab196087 945*5088Sab196087 { MSG_ORIG(MSG_EM_PDSP), EM_PDSP }, 946*5088Sab196087 { MSG_ORIG(MSG_EM_PDSP_ALT1), EM_PDSP }, 947*5088Sab196087 948*5088Sab196087 { MSG_ORIG(MSG_EM_FX66), EM_FX66 }, 949*5088Sab196087 { MSG_ORIG(MSG_EM_FX66_ALT1), EM_FX66 }, 950*5088Sab196087 951*5088Sab196087 { MSG_ORIG(MSG_EM_ST9PLUS), EM_ST9PLUS }, 952*5088Sab196087 { MSG_ORIG(MSG_EM_ST9PLUS_ALT1), EM_ST9PLUS }, 953*5088Sab196087 954*5088Sab196087 { MSG_ORIG(MSG_EM_ST7), EM_ST7 }, 955*5088Sab196087 { MSG_ORIG(MSG_EM_ST7_ALT1), EM_ST7 }, 956*5088Sab196087 957*5088Sab196087 { MSG_ORIG(MSG_EM_68HC16), EM_68HC16 }, 958*5088Sab196087 { MSG_ORIG(MSG_EM_68HC16_ALT1), EM_68HC16 }, 959*5088Sab196087 960*5088Sab196087 { MSG_ORIG(MSG_EM_68HC11), EM_68HC11 }, 961*5088Sab196087 { MSG_ORIG(MSG_EM_68HC11_ALT1), EM_68HC11 }, 962*5088Sab196087 963*5088Sab196087 { MSG_ORIG(MSG_EM_68HC08), EM_68HC08 }, 964*5088Sab196087 { MSG_ORIG(MSG_EM_68HC08_ALT1), EM_68HC08 }, 965*5088Sab196087 966*5088Sab196087 { MSG_ORIG(MSG_EM_68HC05), EM_68HC05 }, 967*5088Sab196087 { MSG_ORIG(MSG_EM_68HC05_ALT1), EM_68HC05 }, 968*5088Sab196087 969*5088Sab196087 { MSG_ORIG(MSG_EM_SVX), EM_SVX }, 970*5088Sab196087 { MSG_ORIG(MSG_EM_SVX_ALT1), EM_SVX }, 971*5088Sab196087 972*5088Sab196087 { MSG_ORIG(MSG_EM_ST19), EM_ST19 }, 973*5088Sab196087 { MSG_ORIG(MSG_EM_ST19_ALT1), EM_ST19 }, 974*5088Sab196087 975*5088Sab196087 { MSG_ORIG(MSG_EM_VAX), EM_VAX }, 976*5088Sab196087 { MSG_ORIG(MSG_EM_VAX_ALT1), EM_VAX }, 977*5088Sab196087 978*5088Sab196087 { MSG_ORIG(MSG_EM_CRIS), EM_CRIS }, 979*5088Sab196087 { MSG_ORIG(MSG_EM_CRIS_ALT1), EM_CRIS }, 980*5088Sab196087 981*5088Sab196087 { MSG_ORIG(MSG_EM_JAVELIN), EM_JAVELIN }, 982*5088Sab196087 { MSG_ORIG(MSG_EM_JAVELIN_ALT1), EM_JAVELIN }, 983*5088Sab196087 984*5088Sab196087 { MSG_ORIG(MSG_EM_FIREPATH), EM_FIREPATH }, 985*5088Sab196087 { MSG_ORIG(MSG_EM_FIREPATH_ALT1), EM_FIREPATH }, 986*5088Sab196087 987*5088Sab196087 { MSG_ORIG(MSG_EM_ZSP), EM_ZSP }, 988*5088Sab196087 { MSG_ORIG(MSG_EM_ZSP_ALT1), EM_ZSP }, 989*5088Sab196087 990*5088Sab196087 { MSG_ORIG(MSG_EM_MMIX), EM_MMIX }, 991*5088Sab196087 { MSG_ORIG(MSG_EM_MMIX_ALT1), EM_MMIX }, 992*5088Sab196087 993*5088Sab196087 { MSG_ORIG(MSG_EM_HUANY), EM_HUANY }, 994*5088Sab196087 { MSG_ORIG(MSG_EM_HUANY_ALT1), EM_HUANY }, 995*5088Sab196087 996*5088Sab196087 { MSG_ORIG(MSG_EM_PRISM), EM_PRISM }, 997*5088Sab196087 { MSG_ORIG(MSG_EM_PRISM_ALT1), EM_PRISM }, 998*5088Sab196087 999*5088Sab196087 { MSG_ORIG(MSG_EM_AVR), EM_AVR }, 1000*5088Sab196087 { MSG_ORIG(MSG_EM_AVR_ALT1), EM_AVR }, 1001*5088Sab196087 1002*5088Sab196087 { MSG_ORIG(MSG_EM_FR30), EM_FR30 }, 1003*5088Sab196087 { MSG_ORIG(MSG_EM_FR30_ALT1), EM_FR30 }, 1004*5088Sab196087 1005*5088Sab196087 { MSG_ORIG(MSG_EM_D10V), EM_D10V }, 1006*5088Sab196087 { MSG_ORIG(MSG_EM_D10V_ALT1), EM_D10V }, 1007*5088Sab196087 1008*5088Sab196087 { MSG_ORIG(MSG_EM_D30V), EM_D30V }, 1009*5088Sab196087 { MSG_ORIG(MSG_EM_D30V_ALT1), EM_D30V }, 1010*5088Sab196087 1011*5088Sab196087 { MSG_ORIG(MSG_EM_V850), EM_V850 }, 1012*5088Sab196087 { MSG_ORIG(MSG_EM_V850_ALT1), EM_V850 }, 1013*5088Sab196087 1014*5088Sab196087 { MSG_ORIG(MSG_EM_M32R), EM_M32R }, 1015*5088Sab196087 { MSG_ORIG(MSG_EM_M32R_ALT1), EM_M32R }, 1016*5088Sab196087 1017*5088Sab196087 { MSG_ORIG(MSG_EM_MN10300), EM_MN10300 }, 1018*5088Sab196087 { MSG_ORIG(MSG_EM_MN10300_ALT1), EM_MN10300 }, 1019*5088Sab196087 1020*5088Sab196087 { MSG_ORIG(MSG_EM_MN10200), EM_MN10200 }, 1021*5088Sab196087 { MSG_ORIG(MSG_EM_MN10200_ALT1), EM_MN10200 }, 1022*5088Sab196087 1023*5088Sab196087 { MSG_ORIG(MSG_EM_PJ), EM_PJ }, 1024*5088Sab196087 { MSG_ORIG(MSG_EM_PJ_ALT1), EM_PJ }, 1025*5088Sab196087 1026*5088Sab196087 { MSG_ORIG(MSG_EM_OPENRISC), EM_OPENRISC }, 1027*5088Sab196087 { MSG_ORIG(MSG_EM_OPENRISC_ALT1), EM_OPENRISC }, 1028*5088Sab196087 1029*5088Sab196087 { MSG_ORIG(MSG_EM_ARC_A5), EM_ARC_A5 }, 1030*5088Sab196087 { MSG_ORIG(MSG_EM_ARC_A5_ALT1), EM_ARC_A5 }, 1031*5088Sab196087 1032*5088Sab196087 { MSG_ORIG(MSG_EM_XTENSA), EM_XTENSA }, 1033*5088Sab196087 { MSG_ORIG(MSG_EM_XTENSA_ALT1), EM_XTENSA }, 1034*5088Sab196087 1035*5088Sab196087 { NULL } 1036*5088Sab196087 }; 1037*5088Sab196087 #if (EM_NUM != (EM_XTENSA + 1)) 1038*5088Sab196087 #error "EM_NUM has grown" 1039*5088Sab196087 #endif 1040*5088Sab196087 1041*5088Sab196087 1042*5088Sab196087 /* 1043*5088Sab196087 * ELF header ELFOSABI_* values (and common aliases) 1044*5088Sab196087 */ 1045*5088Sab196087 static elfedit_atoui_sym_t sym_elfosabi[] = { 1046*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_NONE), ELFOSABI_NONE }, 1047*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_NONE_ALT1), ELFOSABI_NONE }, 1048*5088Sab196087 1049*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_SYSV), ELFOSABI_SYSV }, 1050*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_SYSV_ALT1), ELFOSABI_SYSV }, 1051*5088Sab196087 1052*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_HPUX), ELFOSABI_HPUX }, 1053*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_HPUX_ALT1), ELFOSABI_HPUX }, 1054*5088Sab196087 1055*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_NETBSD), ELFOSABI_NETBSD }, 1056*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_NETBSD_ALT1), ELFOSABI_NETBSD }, 1057*5088Sab196087 1058*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_LINUX), ELFOSABI_LINUX }, 1059*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_LINUX_ALT1), ELFOSABI_LINUX }, 1060*5088Sab196087 1061*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_SOLARIS), ELFOSABI_SOLARIS }, 1062*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_SOLARIS_ALT1), ELFOSABI_SOLARIS }, 1063*5088Sab196087 1064*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_AIX), ELFOSABI_AIX }, 1065*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_AIX_ALT1), ELFOSABI_AIX }, 1066*5088Sab196087 1067*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_IRIX), ELFOSABI_IRIX }, 1068*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_IRIX_ALT1), ELFOSABI_IRIX }, 1069*5088Sab196087 1070*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_FREEBSD), ELFOSABI_FREEBSD }, 1071*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_FREEBSD_ALT1), ELFOSABI_FREEBSD }, 1072*5088Sab196087 1073*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_TRU64), ELFOSABI_TRU64 }, 1074*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_TRU64_ALT1), ELFOSABI_TRU64 }, 1075*5088Sab196087 1076*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_MODESTO), ELFOSABI_MODESTO }, 1077*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_MODESTO_ALT1), ELFOSABI_MODESTO }, 1078*5088Sab196087 1079*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_OPENBSD), ELFOSABI_OPENBSD }, 1080*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_OPENBSD_ALT1), ELFOSABI_OPENBSD }, 1081*5088Sab196087 1082*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_OPENVMS), ELFOSABI_OPENVMS }, 1083*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_OPENVMS_ALT1), ELFOSABI_OPENVMS }, 1084*5088Sab196087 1085*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_NSK), ELFOSABI_NSK }, 1086*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_NSK_ALT1), ELFOSABI_NSK }, 1087*5088Sab196087 1088*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_AROS), ELFOSABI_AROS }, 1089*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_AROS_ALT1), ELFOSABI_AROS }, 1090*5088Sab196087 1091*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_ARM), ELFOSABI_ARM }, 1092*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_ARM_ALT1), ELFOSABI_ARM }, 1093*5088Sab196087 1094*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_STANDALONE), ELFOSABI_STANDALONE }, 1095*5088Sab196087 { MSG_ORIG(MSG_ELFOSABI_STANDALONE_ALT1), ELFOSABI_STANDALONE }, 1096*5088Sab196087 1097*5088Sab196087 { NULL } 1098*5088Sab196087 }; 1099*5088Sab196087 1100*5088Sab196087 1101*5088Sab196087 /* 1102*5088Sab196087 * Program header PT_* type values 1103*5088Sab196087 */ 1104*5088Sab196087 static elfedit_atoui_sym_t sym_pt[] = { 1105*5088Sab196087 { MSG_ORIG(MSG_PT_NULL), PT_NULL }, 1106*5088Sab196087 { MSG_ORIG(MSG_PT_NULL_ALT1), PT_NULL }, 1107*5088Sab196087 1108*5088Sab196087 { MSG_ORIG(MSG_PT_LOAD), PT_LOAD }, 1109*5088Sab196087 { MSG_ORIG(MSG_PT_LOAD_ALT1), PT_LOAD }, 1110*5088Sab196087 1111*5088Sab196087 { MSG_ORIG(MSG_PT_DYNAMIC), PT_DYNAMIC }, 1112*5088Sab196087 { MSG_ORIG(MSG_PT_DYNAMIC_ALT1), PT_DYNAMIC }, 1113*5088Sab196087 1114*5088Sab196087 { MSG_ORIG(MSG_PT_INTERP), PT_INTERP }, 1115*5088Sab196087 { MSG_ORIG(MSG_PT_INTERP_ALT1), PT_INTERP }, 1116*5088Sab196087 1117*5088Sab196087 { MSG_ORIG(MSG_PT_NOTE), PT_NOTE }, 1118*5088Sab196087 { MSG_ORIG(MSG_PT_NOTE_ALT1), PT_NOTE }, 1119*5088Sab196087 1120*5088Sab196087 { MSG_ORIG(MSG_PT_SHLIB), PT_SHLIB }, 1121*5088Sab196087 { MSG_ORIG(MSG_PT_SHLIB_ALT1), PT_SHLIB }, 1122*5088Sab196087 1123*5088Sab196087 { MSG_ORIG(MSG_PT_PHDR), PT_PHDR }, 1124*5088Sab196087 { MSG_ORIG(MSG_PT_PHDR_ALT1), PT_PHDR }, 1125*5088Sab196087 1126*5088Sab196087 { MSG_ORIG(MSG_PT_TLS), PT_TLS }, 1127*5088Sab196087 { MSG_ORIG(MSG_PT_TLS_ALT1), PT_TLS }, 1128*5088Sab196087 1129*5088Sab196087 { MSG_ORIG(MSG_PT_SUNW_UNWIND), PT_SUNW_UNWIND }, 1130*5088Sab196087 { MSG_ORIG(MSG_PT_SUNW_UNWIND_ALT1), PT_SUNW_UNWIND }, 1131*5088Sab196087 1132*5088Sab196087 { MSG_ORIG(MSG_PT_SUNWBSS), PT_SUNWBSS }, 1133*5088Sab196087 { MSG_ORIG(MSG_PT_SUNWBSS_ALT1), PT_SUNWBSS }, 1134*5088Sab196087 1135*5088Sab196087 { MSG_ORIG(MSG_PT_SUNWSTACK), PT_SUNWSTACK }, 1136*5088Sab196087 { MSG_ORIG(MSG_PT_SUNWSTACK_ALT1), PT_SUNWSTACK }, 1137*5088Sab196087 1138*5088Sab196087 { MSG_ORIG(MSG_PT_SUNWDTRACE), PT_SUNWDTRACE }, 1139*5088Sab196087 { MSG_ORIG(MSG_PT_SUNWDTRACE_ALT1), PT_SUNWDTRACE }, 1140*5088Sab196087 1141*5088Sab196087 { MSG_ORIG(MSG_PT_SUNWCAP), PT_SUNWCAP }, 1142*5088Sab196087 { MSG_ORIG(MSG_PT_SUNWCAP_ALT1), PT_SUNWCAP }, 1143*5088Sab196087 1144*5088Sab196087 { NULL } 1145*5088Sab196087 }; 1146*5088Sab196087 1147*5088Sab196087 1148*5088Sab196087 /* 1149*5088Sab196087 * Program header PF_* flag values 1150*5088Sab196087 */ 1151*5088Sab196087 static elfedit_atoui_sym_t sym_pf[] = { 1152*5088Sab196087 { MSG_ORIG(MSG_PF_X), PF_X }, 1153*5088Sab196087 { MSG_ORIG(MSG_PF_X_ALT1), PF_X }, 1154*5088Sab196087 1155*5088Sab196087 { MSG_ORIG(MSG_PF_W), PF_W }, 1156*5088Sab196087 { MSG_ORIG(MSG_PF_W_ALT1), PF_W }, 1157*5088Sab196087 1158*5088Sab196087 { MSG_ORIG(MSG_PF_R), PF_R }, 1159*5088Sab196087 { MSG_ORIG(MSG_PF_R_ALT1), PF_R }, 1160*5088Sab196087 1161*5088Sab196087 { NULL } 1162*5088Sab196087 }; 1163*5088Sab196087 1164*5088Sab196087 1165*5088Sab196087 /* 1166*5088Sab196087 * Section header SHF_* flag values 1167*5088Sab196087 */ 1168*5088Sab196087 static elfedit_atoui_sym_t sym_shf[] = { 1169*5088Sab196087 { MSG_ORIG(MSG_SHF_WRITE), SHF_WRITE }, 1170*5088Sab196087 { MSG_ORIG(MSG_SHF_WRITE_ALT1), SHF_WRITE }, 1171*5088Sab196087 1172*5088Sab196087 { MSG_ORIG(MSG_SHF_ALLOC), SHF_ALLOC }, 1173*5088Sab196087 { MSG_ORIG(MSG_SHF_ALLOC_ALT1), SHF_ALLOC }, 1174*5088Sab196087 1175*5088Sab196087 { MSG_ORIG(MSG_SHF_EXECINSTR), SHF_EXECINSTR }, 1176*5088Sab196087 { MSG_ORIG(MSG_SHF_EXECINSTR_ALT1), SHF_EXECINSTR }, 1177*5088Sab196087 1178*5088Sab196087 { MSG_ORIG(MSG_SHF_MERGE), SHF_MERGE }, 1179*5088Sab196087 { MSG_ORIG(MSG_SHF_MERGE_ALT1), SHF_MERGE }, 1180*5088Sab196087 1181*5088Sab196087 { MSG_ORIG(MSG_SHF_STRINGS), SHF_STRINGS }, 1182*5088Sab196087 { MSG_ORIG(MSG_SHF_STRINGS_ALT1), SHF_STRINGS }, 1183*5088Sab196087 1184*5088Sab196087 { MSG_ORIG(MSG_SHF_INFO_LINK), SHF_INFO_LINK }, 1185*5088Sab196087 { MSG_ORIG(MSG_SHF_INFO_LINK_ALT1), SHF_INFO_LINK }, 1186*5088Sab196087 1187*5088Sab196087 { MSG_ORIG(MSG_SHF_LINK_ORDER), SHF_LINK_ORDER }, 1188*5088Sab196087 { MSG_ORIG(MSG_SHF_LINK_ORDER_ALT1), SHF_LINK_ORDER }, 1189*5088Sab196087 1190*5088Sab196087 { MSG_ORIG(MSG_SHF_OS_NONCONFORMING), SHF_OS_NONCONFORMING }, 1191*5088Sab196087 { MSG_ORIG(MSG_SHF_OS_NONCONFORMING_ALT1), SHF_OS_NONCONFORMING }, 1192*5088Sab196087 1193*5088Sab196087 { MSG_ORIG(MSG_SHF_GROUP), SHF_GROUP }, 1194*5088Sab196087 { MSG_ORIG(MSG_SHF_GROUP_ALT1), SHF_GROUP }, 1195*5088Sab196087 1196*5088Sab196087 { MSG_ORIG(MSG_SHF_TLS), SHF_TLS }, 1197*5088Sab196087 { MSG_ORIG(MSG_SHF_TLS_ALT1), SHF_TLS }, 1198*5088Sab196087 1199*5088Sab196087 { NULL } 1200*5088Sab196087 }; 1201*5088Sab196087 1202*5088Sab196087 /* 1203*5088Sab196087 * ELF symbol bindings (st_info ELF_ST_BIND) 1204*5088Sab196087 */ 1205*5088Sab196087 static elfedit_atoui_sym_t sym_stb[] = { 1206*5088Sab196087 { MSG_ORIG(MSG_STB_LOCAL), STB_LOCAL }, 1207*5088Sab196087 { MSG_ORIG(MSG_STB_LOCAL_ALT1), STB_LOCAL }, 1208*5088Sab196087 1209*5088Sab196087 { MSG_ORIG(MSG_STB_GLOBAL), STB_GLOBAL }, 1210*5088Sab196087 { MSG_ORIG(MSG_STB_GLOBAL_ALT1), STB_GLOBAL }, 1211*5088Sab196087 1212*5088Sab196087 { MSG_ORIG(MSG_STB_WEAK), STB_WEAK }, 1213*5088Sab196087 { MSG_ORIG(MSG_STB_WEAK_ALT1), STB_WEAK }, 1214*5088Sab196087 1215*5088Sab196087 { NULL } 1216*5088Sab196087 }; 1217*5088Sab196087 1218*5088Sab196087 /* 1219*5088Sab196087 * ELF symbol types (st_info ELF_ST_TYPE) 1220*5088Sab196087 */ 1221*5088Sab196087 static elfedit_atoui_sym_t sym_stt[] = { 1222*5088Sab196087 { MSG_ORIG(MSG_STT_NOTYPE), STT_NOTYPE }, 1223*5088Sab196087 { MSG_ORIG(MSG_STT_NOTYPE_ALT1), STT_NOTYPE }, 1224*5088Sab196087 1225*5088Sab196087 { MSG_ORIG(MSG_STT_OBJECT), STT_OBJECT }, 1226*5088Sab196087 { MSG_ORIG(MSG_STT_OBJECT_ALT1), STT_OBJECT }, 1227*5088Sab196087 1228*5088Sab196087 { MSG_ORIG(MSG_STT_FUNC), STT_FUNC }, 1229*5088Sab196087 { MSG_ORIG(MSG_STT_FUNC_ALT1), STT_FUNC }, 1230*5088Sab196087 1231*5088Sab196087 { MSG_ORIG(MSG_STT_SECTION), STT_SECTION }, 1232*5088Sab196087 { MSG_ORIG(MSG_STT_SECTION_ALT1), STT_SECTION }, 1233*5088Sab196087 1234*5088Sab196087 { MSG_ORIG(MSG_STT_FILE), STT_FILE }, 1235*5088Sab196087 { MSG_ORIG(MSG_STT_FILE_ALT1), STT_FILE }, 1236*5088Sab196087 1237*5088Sab196087 { MSG_ORIG(MSG_STT_COMMON), STT_COMMON }, 1238*5088Sab196087 { MSG_ORIG(MSG_STT_COMMON_ALT1), STT_COMMON }, 1239*5088Sab196087 1240*5088Sab196087 { MSG_ORIG(MSG_STT_TLS), STT_TLS }, 1241*5088Sab196087 { MSG_ORIG(MSG_STT_TLS_ALT1), STT_TLS }, 1242*5088Sab196087 1243*5088Sab196087 { NULL } 1244*5088Sab196087 }; 1245*5088Sab196087 1246*5088Sab196087 /* 1247*5088Sab196087 * ELF symbol visibility (st_other ELF_ST_VISIBILITY) 1248*5088Sab196087 */ 1249*5088Sab196087 static elfedit_atoui_sym_t sym_stv[] = { 1250*5088Sab196087 { MSG_ORIG(MSG_STV_DEFAULT), STV_DEFAULT }, 1251*5088Sab196087 { MSG_ORIG(MSG_STV_DEFAULT_ALT1), STV_DEFAULT }, 1252*5088Sab196087 1253*5088Sab196087 { MSG_ORIG(MSG_STV_INTERNAL), STV_INTERNAL }, 1254*5088Sab196087 { MSG_ORIG(MSG_STV_INTERNAL_ALT1), STV_INTERNAL }, 1255*5088Sab196087 1256*5088Sab196087 { MSG_ORIG(MSG_STV_HIDDEN), STV_HIDDEN }, 1257*5088Sab196087 { MSG_ORIG(MSG_STV_HIDDEN_ALT1), STV_HIDDEN }, 1258*5088Sab196087 1259*5088Sab196087 { MSG_ORIG(MSG_STV_PROTECTED), STV_PROTECTED }, 1260*5088Sab196087 { MSG_ORIG(MSG_STV_PROTECTED_ALT1), STV_PROTECTED }, 1261*5088Sab196087 1262*5088Sab196087 { NULL } 1263*5088Sab196087 }; 1264*5088Sab196087 1265*5088Sab196087 /* 1266*5088Sab196087 * ELF syminfo SYMINFO_BT_ special boundto values 1267*5088Sab196087 */ 1268*5088Sab196087 static elfedit_atoui_sym_t sym_syminfo_bt[] = { 1269*5088Sab196087 { MSG_ORIG(MSG_SYMINFO_BT_SELF), SYMINFO_BT_SELF }, 1270*5088Sab196087 { MSG_ORIG(MSG_SYMINFO_BT_SELF_ALT1), SYMINFO_BT_SELF }, 1271*5088Sab196087 1272*5088Sab196087 { MSG_ORIG(MSG_SYMINFO_BT_PARENT), SYMINFO_BT_PARENT }, 1273*5088Sab196087 { MSG_ORIG(MSG_SYMINFO_BT_PARENT_ALT1), SYMINFO_BT_PARENT }, 1274*5088Sab196087 1275*5088Sab196087 { MSG_ORIG(MSG_SYMINFO_BT_NONE), SYMINFO_BT_NONE }, 1276*5088Sab196087 { MSG_ORIG(MSG_SYMINFO_BT_NONE_ALT1), SYMINFO_BT_NONE }, 1277*5088Sab196087 1278*5088Sab196087 { NULL } 1279*5088Sab196087 }; 1280*5088Sab196087 1281*5088Sab196087 1282*5088Sab196087 /* 1283*5088Sab196087 * ELF syminfo SYMINFO_FLG_ flags 1284*5088Sab196087 */ 1285*5088Sab196087 static elfedit_atoui_sym_t sym_syminfo_flg[] = { 1286*5088Sab196087 { MSG_ORIG(MSG_SYMINFO_FLG_DIRECT), SYMINFO_FLG_DIRECT }, 1287*5088Sab196087 { MSG_ORIG(MSG_SYMINFO_FLG_DIRECT_ALT1), SYMINFO_FLG_DIRECT }, 1288*5088Sab196087 1289*5088Sab196087 { MSG_ORIG(MSG_SYMINFO_FLG_COPY), SYMINFO_FLG_COPY }, 1290*5088Sab196087 { MSG_ORIG(MSG_SYMINFO_FLG_COPY_ALT1), SYMINFO_FLG_COPY }, 1291*5088Sab196087 1292*5088Sab196087 { MSG_ORIG(MSG_SYMINFO_FLG_LAZYLOAD), SYMINFO_FLG_LAZYLOAD }, 1293*5088Sab196087 { MSG_ORIG(MSG_SYMINFO_FLG_LAZYLOAD_ALT1), SYMINFO_FLG_LAZYLOAD }, 1294*5088Sab196087 1295*5088Sab196087 { MSG_ORIG(MSG_SYMINFO_FLG_DIRECTBIND), SYMINFO_FLG_DIRECTBIND }, 1296*5088Sab196087 { MSG_ORIG(MSG_SYMINFO_FLG_DIRECTBIND_ALT1), SYMINFO_FLG_DIRECTBIND }, 1297*5088Sab196087 1298*5088Sab196087 { MSG_ORIG(MSG_SYMINFO_FLG_NOEXTDIRECT), SYMINFO_FLG_NOEXTDIRECT }, 1299*5088Sab196087 { MSG_ORIG(MSG_SYMINFO_FLG_NOEXTDIRECT_ALT1), SYMINFO_FLG_NOEXTDIRECT }, 1300*5088Sab196087 1301*5088Sab196087 { NULL } 1302*5088Sab196087 }; 1303*5088Sab196087 1304*5088Sab196087 1305*5088Sab196087 /* 1306*5088Sab196087 * ELF capabilities tag CA_ values 1307*5088Sab196087 */ 1308*5088Sab196087 static elfedit_atoui_sym_t sym_ca[] = { 1309*5088Sab196087 { MSG_ORIG(MSG_CA_SUNW_NULL), CA_SUNW_NULL }, 1310*5088Sab196087 { MSG_ORIG(MSG_CA_SUNW_NULL_ALT1), CA_SUNW_NULL }, 1311*5088Sab196087 1312*5088Sab196087 { MSG_ORIG(MSG_CA_SUNW_HW_1), CA_SUNW_HW_1 }, 1313*5088Sab196087 { MSG_ORIG(MSG_CA_SUNW_HW_1_ALT1), CA_SUNW_HW_1 }, 1314*5088Sab196087 1315*5088Sab196087 { MSG_ORIG(MSG_CA_SUNW_SF_1), CA_SUNW_SF_1 }, 1316*5088Sab196087 { MSG_ORIG(MSG_CA_SUNW_SF_1_ALT1), CA_SUNW_SF_1 }, 1317*5088Sab196087 1318*5088Sab196087 { NULL } 1319*5088Sab196087 }; 1320*5088Sab196087 1321*5088Sab196087 /* 1322*5088Sab196087 * AV_386 flags used for CA_SUNW_HW_1 capabilities 1323*5088Sab196087 */ 1324*5088Sab196087 static elfedit_atoui_sym_t sym_av_386[] = { 1325*5088Sab196087 { MSG_ORIG(MSG_AV_386_FPU), AV_386_FPU }, 1326*5088Sab196087 { MSG_ORIG(MSG_AV_386_FPU_ALT1), AV_386_FPU }, 1327*5088Sab196087 1328*5088Sab196087 { MSG_ORIG(MSG_AV_386_TSC), AV_386_TSC }, 1329*5088Sab196087 { MSG_ORIG(MSG_AV_386_TSC_ALT1), AV_386_TSC }, 1330*5088Sab196087 1331*5088Sab196087 { MSG_ORIG(MSG_AV_386_CX8), AV_386_CX8 }, 1332*5088Sab196087 { MSG_ORIG(MSG_AV_386_CX8_ALT1), AV_386_CX8 }, 1333*5088Sab196087 1334*5088Sab196087 { MSG_ORIG(MSG_AV_386_SEP), AV_386_SEP }, 1335*5088Sab196087 { MSG_ORIG(MSG_AV_386_SEP_ALT1), AV_386_SEP }, 1336*5088Sab196087 1337*5088Sab196087 { MSG_ORIG(MSG_AV_386_AMD_SYSC), AV_386_AMD_SYSC }, 1338*5088Sab196087 { MSG_ORIG(MSG_AV_386_AMD_SYSC_ALT1), AV_386_AMD_SYSC }, 1339*5088Sab196087 1340*5088Sab196087 { MSG_ORIG(MSG_AV_386_CMOV), AV_386_CMOV }, 1341*5088Sab196087 { MSG_ORIG(MSG_AV_386_CMOV_ALT1), AV_386_CMOV }, 1342*5088Sab196087 1343*5088Sab196087 { MSG_ORIG(MSG_AV_386_MMX), AV_386_MMX }, 1344*5088Sab196087 { MSG_ORIG(MSG_AV_386_MMX_ALT1), AV_386_MMX }, 1345*5088Sab196087 1346*5088Sab196087 { MSG_ORIG(MSG_AV_386_AMD_MMX), AV_386_AMD_MMX }, 1347*5088Sab196087 { MSG_ORIG(MSG_AV_386_AMD_MMX_ALT1), AV_386_AMD_MMX }, 1348*5088Sab196087 1349*5088Sab196087 { MSG_ORIG(MSG_AV_386_AMD_3DNOW), AV_386_AMD_3DNow }, 1350*5088Sab196087 { MSG_ORIG(MSG_AV_386_AMD_3DNOW_ALT1), AV_386_AMD_3DNow }, 1351*5088Sab196087 1352*5088Sab196087 { MSG_ORIG(MSG_AV_386_AMD_3DNOWX), AV_386_AMD_3DNowx }, 1353*5088Sab196087 { MSG_ORIG(MSG_AV_386_AMD_3DNOWX_ALT1), AV_386_AMD_3DNowx }, 1354*5088Sab196087 1355*5088Sab196087 { MSG_ORIG(MSG_AV_386_FXSR), AV_386_FXSR }, 1356*5088Sab196087 { MSG_ORIG(MSG_AV_386_FXSR_ALT1), AV_386_FXSR }, 1357*5088Sab196087 1358*5088Sab196087 { MSG_ORIG(MSG_AV_386_SSE), AV_386_SSE }, 1359*5088Sab196087 { MSG_ORIG(MSG_AV_386_SSE_ALT1), AV_386_SSE }, 1360*5088Sab196087 1361*5088Sab196087 { MSG_ORIG(MSG_AV_386_SSE2), AV_386_SSE2 }, 1362*5088Sab196087 { MSG_ORIG(MSG_AV_386_SSE2_ALT1), AV_386_SSE2 }, 1363*5088Sab196087 1364*5088Sab196087 { MSG_ORIG(MSG_AV_386_PAUSE), AV_386_PAUSE }, 1365*5088Sab196087 { MSG_ORIG(MSG_AV_386_PAUSE_ALT1), AV_386_PAUSE }, 1366*5088Sab196087 1367*5088Sab196087 { MSG_ORIG(MSG_AV_386_SSE3), AV_386_SSE3 }, 1368*5088Sab196087 { MSG_ORIG(MSG_AV_386_SSE3_ALT1), AV_386_SSE3 }, 1369*5088Sab196087 1370*5088Sab196087 { MSG_ORIG(MSG_AV_386_MON), AV_386_MON }, 1371*5088Sab196087 { MSG_ORIG(MSG_AV_386_MON_ALT1), AV_386_MON }, 1372*5088Sab196087 1373*5088Sab196087 { MSG_ORIG(MSG_AV_386_CX16), AV_386_CX16 }, 1374*5088Sab196087 { MSG_ORIG(MSG_AV_386_CX16_ALT1), AV_386_CX16 }, 1375*5088Sab196087 1376*5088Sab196087 { MSG_ORIG(MSG_AV_386_AHF), AV_386_AHF }, 1377*5088Sab196087 { MSG_ORIG(MSG_AV_386_AHF_ALT1), AV_386_AHF }, 1378*5088Sab196087 1379*5088Sab196087 { MSG_ORIG(MSG_AV_386_TSCP), AV_386_TSCP }, 1380*5088Sab196087 { MSG_ORIG(MSG_AV_386_TSCP_ALT1), AV_386_TSCP }, 1381*5088Sab196087 1382*5088Sab196087 { MSG_ORIG(MSG_AV_386_AMD_SSE4A), AV_386_AMD_SSE4A }, 1383*5088Sab196087 { MSG_ORIG(MSG_AV_386_AMD_SSE4A_ALT1), AV_386_AMD_SSE4A }, 1384*5088Sab196087 1385*5088Sab196087 { MSG_ORIG(MSG_AV_386_POPCNT), AV_386_POPCNT }, 1386*5088Sab196087 { MSG_ORIG(MSG_AV_386_POPCNT_ALT1), AV_386_POPCNT }, 1387*5088Sab196087 1388*5088Sab196087 { MSG_ORIG(MSG_AV_386_AMD_LZCNT), AV_386_AMD_LZCNT }, 1389*5088Sab196087 { MSG_ORIG(MSG_AV_386_AMD_LZCNT_ALT1), AV_386_AMD_LZCNT }, 1390*5088Sab196087 1391*5088Sab196087 { NULL } 1392*5088Sab196087 }; 1393*5088Sab196087 1394*5088Sab196087 1395*5088Sab196087 /* 1396*5088Sab196087 * AV_SPARC flags used for CA_SUNW_HW_1 capabilities 1397*5088Sab196087 */ 1398*5088Sab196087 static elfedit_atoui_sym_t sym_av_sparc[] = { 1399*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_MUL32), AV_SPARC_MUL32 }, 1400*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_MUL32_ALT1), AV_SPARC_MUL32 }, 1401*5088Sab196087 1402*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_DIV32), AV_SPARC_DIV32 }, 1403*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_DIV32_ALT1), AV_SPARC_DIV32 }, 1404*5088Sab196087 1405*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_FSMULD), AV_SPARC_FSMULD }, 1406*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_FSMULD_ALT1), AV_SPARC_FSMULD }, 1407*5088Sab196087 1408*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_V8PLUS), AV_SPARC_V8PLUS }, 1409*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_V8PLUS_ALT1), AV_SPARC_V8PLUS }, 1410*5088Sab196087 1411*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_POPC), AV_SPARC_POPC }, 1412*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_POPC_ALT1), AV_SPARC_POPC }, 1413*5088Sab196087 1414*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_VIS), AV_SPARC_VIS }, 1415*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_VIS_ALT1), AV_SPARC_VIS }, 1416*5088Sab196087 1417*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_VIS2), AV_SPARC_VIS2 }, 1418*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_VIS2_ALT1), AV_SPARC_VIS2 }, 1419*5088Sab196087 1420*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_ASI_BLK_INIT), AV_SPARC_ASI_BLK_INIT }, 1421*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_ASI_BLK_INIT_ALT1), AV_SPARC_ASI_BLK_INIT }, 1422*5088Sab196087 1423*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_FMAF), AV_SPARC_FMAF }, 1424*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_FMAF_ALT1), AV_SPARC_FMAF }, 1425*5088Sab196087 1426*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_FJFMAU), AV_SPARC_FJFMAU }, 1427*5088Sab196087 { MSG_ORIG(MSG_AV_SPARC_FJFMAU_ALT1), AV_SPARC_FJFMAU }, 1428*5088Sab196087 1429*5088Sab196087 { NULL } 1430*5088Sab196087 }; 1431*5088Sab196087 1432*5088Sab196087 1433*5088Sab196087 /* 1434*5088Sab196087 * SF1_SUNW flags used for CA_SUNW_SF_1 capabilities 1435*5088Sab196087 */ 1436*5088Sab196087 static elfedit_atoui_sym_t sym_sf1_sunw[] = { 1437*5088Sab196087 { MSG_ORIG(MSG_SF1_SUNW_FPKNWN), SF1_SUNW_FPKNWN }, 1438*5088Sab196087 { MSG_ORIG(MSG_SF1_SUNW_FPKNWN_ALT1), SF1_SUNW_FPKNWN }, 1439*5088Sab196087 1440*5088Sab196087 { MSG_ORIG(MSG_SF1_SUNW_FPUSED), SF1_SUNW_FPUSED }, 1441*5088Sab196087 { MSG_ORIG(MSG_SF1_SUNW_FPUSED_ALT1), SF1_SUNW_FPUSED }, 1442*5088Sab196087 1443*5088Sab196087 { NULL } 1444*5088Sab196087 }; 1445*5088Sab196087 1446*5088Sab196087 1447*5088Sab196087 1448*5088Sab196087 1449*5088Sab196087 1450*5088Sab196087 1451*5088Sab196087 1452*5088Sab196087 /* 1453*5088Sab196087 * Array of pointers to atoui arrays for each constant type, indexed 1454*5088Sab196087 * by elfedit_const_t value. The number and order of entries in this 1455*5088Sab196087 * table must agree with the definition of elfedit_const_t in elfedit.h. 1456*5088Sab196087 */ 1457*5088Sab196087 static elfedit_atoui_sym_t *sym_table[] = { 1458*5088Sab196087 sym_outstyle, /* 0: ELFEDIT_CONST_OUTSTYLE */ 1459*5088Sab196087 sym_minus_o_outstyle, /* 1: ELFEDIT_CONST_OUTSTYLE_MO */ 1460*5088Sab196087 sym_bool, /* 2: ELFEDIT_CONST_BOOL */ 1461*5088Sab196087 sym_shn, /* 3: ELFEDIT_CONST_SHN */ 1462*5088Sab196087 sym_sht, /* 4: ELFEDIT_CONST_SHT */ 1463*5088Sab196087 sym_sht_strtab, /* 5: ELFEDIT_CONST_SHT_STRTAB */ 1464*5088Sab196087 sym_sht_allsymtab, /* 6: ELFEDIT_CONST_SHT_ALLSYMTAB */ 1465*5088Sab196087 sym_sht_symtab, /* 7: ELFEDIT_CONST_SHT_SYMTAB */ 1466*5088Sab196087 sym_sht_dynsym, /* 8: ELFEDIT_CONST_SHT_DYNSYM */ 1467*5088Sab196087 sym_sht_ldynsym, /* 9: ELFEDIT_CONST_SHT_LDYNSYM */ 1468*5088Sab196087 sym_dt, /* 10: ELFEDIT_CONST_DT: Dynamic tags */ 1469*5088Sab196087 sym_df, /* 11: ELFEDIT_CONST_DF: DT_FLAGS */ 1470*5088Sab196087 sym_df_p1, /* 12: ELFEDIT_CONST_DF_P1: DF_POSFLAG_1 */ 1471*5088Sab196087 sym_df_1, /* 13: ELFEDIT_CONST_DF_1: DT_FLAGS_1 */ 1472*5088Sab196087 sym_dtf_1, /* 14: ELFEDIT_CONST_DTF_1: DT_FEATURE_1 */ 1473*5088Sab196087 sym_ei, /* 15: ELFEDIT_CONST_EI: Ehdr e_ident indexes */ 1474*5088Sab196087 sym_et, /* 16: ELFEDIT_CONST_ET: Ehdr obj type */ 1475*5088Sab196087 sym_elfclass, /* 17: ELFEDIT_CONST_ELFCLASS: Ehdr class */ 1476*5088Sab196087 sym_elfdata, /* 18: ELFEDIT_CONST_ELFDATA: Ehdr endian */ 1477*5088Sab196087 sym_ef, /* 19: ELFEDIT_CONST_EF: Ehdr flags */ 1478*5088Sab196087 sym_ev, /* 20: ELFEDIT_CONST_EV: Ehdr version */ 1479*5088Sab196087 sym_em, /* 21: ELFEDIT_CONST_EM: Ehdr machine */ 1480*5088Sab196087 sym_elfosabi, /* 22: ELFEDIT_CONST_ELFOSABI: Ehdr ABI */ 1481*5088Sab196087 sym_pt, /* 23: ELFEDIT_CONST_PT: Phdr type */ 1482*5088Sab196087 sym_pf, /* 24: ELFEDIT_CONST_PF: Phdr flags */ 1483*5088Sab196087 sym_shf, /* 25: ELFEDIT_CONST_SHF: Shdr flags */ 1484*5088Sab196087 sym_stb, /* 26: ELFEDIT_CONST_STB: Sym binding */ 1485*5088Sab196087 sym_stt, /* 27: ELFEDIT_CONST_STT: Sym type */ 1486*5088Sab196087 sym_stv, /* 28: ELFEDIT_CONST_STV: Sym visibility */ 1487*5088Sab196087 sym_syminfo_bt, /* 29: ELFEDIT_CONST_SYMINFO_BT:Syminfo bndto */ 1488*5088Sab196087 sym_syminfo_flg, /* 30: ELFEDIT_CONST_SYMINFO_FLG:Syminfo flag */ 1489*5088Sab196087 sym_ca, /* 31: ELFEDIT_CONST_CA: Capabilities tags */ 1490*5088Sab196087 sym_av_386, /* 32: ELFEDIT_CONST_AV_386: X86 HW caps */ 1491*5088Sab196087 sym_av_sparc, /* 33: ELFEDIT_CONST_AV_SPARC: sparc HW caps */ 1492*5088Sab196087 sym_sf1_sunw, /* 34: ELFEDIT_CONST_SF1_SUNW: software caps */ 1493*5088Sab196087 }; 1494*5088Sab196087 1495*5088Sab196087 1496*5088Sab196087 1497*5088Sab196087 1498*5088Sab196087 1499*5088Sab196087 1500*5088Sab196087 1501*5088Sab196087 /* 1502*5088Sab196087 * Given an elfedit_const_t value, return the array of elfedit_atoui_sym_t 1503*5088Sab196087 * entries that it represents. 1504*5088Sab196087 */ 1505*5088Sab196087 elfedit_atoui_sym_t * 1506*5088Sab196087 elfedit_const_to_atoui(elfedit_const_t const_type) 1507*5088Sab196087 { 1508*5088Sab196087 if ((const_type < 0) || 1509*5088Sab196087 (const_type >= (sizeof (sym_table) / sizeof (sym_table[0])))) 1510*5088Sab196087 elfedit_msg(ELFEDIT_MSG_ERR, MSG_INTL(MSG_ERR_BADCONST)); 1511*5088Sab196087 1512*5088Sab196087 return (sym_table[const_type]); 1513*5088Sab196087 } 1514*5088Sab196087 1515*5088Sab196087 1516*5088Sab196087 1517*5088Sab196087 /* 1518*5088Sab196087 * Return the elfedit_atoui_t array that corresponds to the 1519*5088Sab196087 * CA_SUNW_HW_1 hardware capabiliies field for a given 1520*5088Sab196087 * machine type. 1521*5088Sab196087 * 1522*5088Sab196087 * This routine will return NULL if there is no definition for the 1523*5088Sab196087 * machine specified. 1524*5088Sab196087 */ 1525*5088Sab196087 elfedit_atoui_sym_t * 1526*5088Sab196087 elfedit_mach_sunw_hw1_to_atoui(int mach) 1527*5088Sab196087 { 1528*5088Sab196087 switch (mach) { 1529*5088Sab196087 case EM_386: 1530*5088Sab196087 case EM_486: 1531*5088Sab196087 case EM_AMD64: 1532*5088Sab196087 return (elfedit_const_to_atoui(ELFEDIT_CONST_AV_386)); 1533*5088Sab196087 1534*5088Sab196087 case EM_SPARC: 1535*5088Sab196087 case EM_SPARC32PLUS: 1536*5088Sab196087 case EM_SPARCV9: 1537*5088Sab196087 return (elfedit_const_to_atoui(ELFEDIT_CONST_AV_SPARC)); 1538*5088Sab196087 } 1539*5088Sab196087 1540*5088Sab196087 /* A machine we don't know about */ 1541*5088Sab196087 return (NULL); 1542*5088Sab196087 } 1543