llib-lconv revision 5088:26c540f30cd3
1275970Scy/* 2275970Scy * CDDL HEADER START 3275970Scy * 4275970Scy * The contents of this file are subject to the terms of the 5275970Scy * Common Development and Distribution License (the "License"). 6275970Scy * You may not use this file except in compliance with the License. 7275970Scy * 8275970Scy * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9275970Scy * or http://www.opensolaris.org/os/licensing. 10275970Scy * See the License for the specific language governing permissions 11275970Scy * and limitations under the License. 12275970Scy * 13275970Scy * When distributing Covered Code, include this CDDL HEADER in each 14275970Scy * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15275970Scy * If applicable, add the following below this CDDL HEADER, with the 16275970Scy * fields enclosed by brackets "[]" replaced with your own identifying 17275970Scy * information: Portions Copyright [yyyy] [name of copyright owner] 18275970Scy * 19275970Scy * CDDL HEADER END 20275970Scy */ 21275970Scy 22275970Scy/* 23275970Scy * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 24275970Scy * Use is subject to license terms. 25275970Scy */ 26275970Scy/* LINTLIBRARY */ 27275970Scy/* PROTOLIB1 */ 28275970Scy 29275970Scy#pragma ident "%Z%%M% %I% %E% SMI" 30275970Scy 31275970Scy#include <stdlib.h> 32275970Scy#include <libelf.h> 33275970Scy#include <sys/machelf.h> 34275970Scy#include <sgs.h> 35275970Scy#include <libld.h> 36275970Scy#include <conv.h> 37275970Scy 38275970Scy/* 39275970Scy * Define all generic interfaces. 40275970Scy */ 41275970Scyuchar_t conv_check_native(char **, char **); 42275970Scyconst char *conv_config_feat(int, Conv_config_feat_buf_t *); 43275970Scyconst char *conv_config_obj(ushort_t, Conv_config_obj_buf_t *); 44275970Scyconst char *conv_config_upm(const char *, const char *, const char *, 45275970Scy size_t); 46275970Scyconst char *conv_def_tag(Symref, Conv_inv_buf_t *); 47275970Scyconst char *conv_demangle_name(const char *); 48275970Scyconst char *conv_dl_flag(int, int, Conv_dl_flag_buf_t *); 49275970Scyconst char *conv_dl_mode(int, int, Conv_dl_mode_buf_t *); 50275970Scyconst char *conv_dwarf_ehe(uint_t, Conv_dwarf_ehe_buf_t *); 51275970Scyconst char *conv_elfdata_type(Elf_Type, Conv_inv_buf_t *); 52275970Scyint conv_expn_field(CONV_EXPN_FIELD_ARG *, Conv_fmt_flags_t); 53275970Scyconst char *conv_grphdl_flags(uint_t, Conv_grphdl_flags_buf_t *); 54275970Scyconst char *conv_grpdesc_flags(uint_t, Conv_grpdesc_flags_buf_t *); 55275970ScyIsa_desc *conv_isalist(void); 56275970Scyconst char *conv_lddstub(int); 57275970Scyconst char *conv_seg_flags(Half, Conv_seg_flags_buf_t *); 58275970Scyint conv_sys_eclass(void); 59275970ScyUts_desc *conv_uts(void); 60275970Scyconst char *conv_ver_flags(Half); 61275970Scyconst char *conv_ver_index(Versym, int, Conv_inv_buf_t *); 62275970Scy 63275970Scy 64275970Scy/* 65275970Scy * Define all class specific routines. 66275970Scy */ 67275970Scyconst char *conv32_bnd_obj(uint_t, Conv32_bnd_obj_buf_t *); 68275970Scyconst char *conv64_bnd_obj(uint_t, Conv64_bnd_obj_buf_t *); 69275970Scyconst char *conv32_bnd_type(uint_t, Conv32_bnd_type_buf_t *); 70275970Scyconst char *conv64_bnd_type(uint_t, Conv64_bnd_type_buf_t *); 71275970Scyconst char *conv32_cap_tag(Elf32_Word, Conv32_inv_buf_t *); 72275970Scyconst char *conv64_cap_tag(Elf64_Xword, Conv64_inv_buf_t *); 73275970Scyconst char *conv32_cap_val(Elf32_Word, Elf32_Word, Half, 74275970Scy Conv32_cap_val_buf_t *); 75275970Scyconst char *conv64_cap_val(Elf64_Xword, Elf64_Xword, Half, 76275970Scy Conv64_cap_val_buf_t *); 77275970Scyconst char *conv32_cap_val_hw1(Elf32_Word, Half, Conv_fmt_flags_t, 78275970Scy Conv32_cap_val_hw1_buf_t *); 79275970Scyconst char *conv64_cap_val_hw1(Elf64_Xword, Half, Conv_fmt_flags_t, 80275970Scy Conv64_cap_val_hw1_buf_t *); 81275970Scyconst char *conv32_cap_val_sf1(Elf32_Word, Half, Conv_fmt_flags_t, 82275970Scy Conv32_cap_val_sf1_buf_t *); 83275970Scyconst char *conv64_cap_val_sf1(Elf64_Xword, Half, Conv_fmt_flags_t, 84275970Scy Conv64_cap_val_sf1_buf_t *); 85275970Scyconst char *conv32_dyn_flag1(Elf32_Word, Conv_fmt_flags_t, 86275970Scy Conv32_dyn_flag1_buf_t *); 87275970Scyconst char *conv64_dyn_flag1(Elf64_Xword, Conv_fmt_flags_t, 88275970Scy Conv64_dyn_flag1_buf_t *); 89275970Scyconst char *conv32_dyn_flag(Elf32_Word, int, Conv32_dyn_flag_buf_t *); 90275970Scyconst char *conv64_dyn_flag(Elf64_Xword, int, Conv64_dyn_flag_buf_t *); 91const char *conv32_dyn_posflag1(Elf32_Word, int, 92 Conv32_dyn_posflag1_buf_t *); 93const char *conv64_dyn_posflag1(Elf64_Xword, int, 94 Conv64_dyn_posflag1_buf_t *); 95const char *conv32_dyn_tag(Elf32_Word, Elf32_Half, int, 96 Conv32_inv_buf_t *); 97const char *conv64_dyn_tag(Elf64_Xword, Elf64_Half, int, 98 Conv64_inv_buf_t *); 99const char *conv32_dyn_feature1(Elf32_Word, int, 100 Conv32_dyn_feature1_buf_t *); 101const char *conv64_dyn_feature1(Elf64_Xword, int, 102 Conv64_dyn_feature1_buf_t *); 103const char *conv32_ehdr_class(uchar_t, int, Conv32_inv_buf_t *); 104const char *conv64_ehdr_class(uchar_t, int, Conv64_inv_buf_t *); 105const char *conv32_ehdr_data(uchar_t, int, Conv32_inv_buf_t *); 106const char *conv64_ehdr_data(uchar_t, int, Conv64_inv_buf_t *); 107const char *conv32_ehdr_flags(Elf32_Half, Elf32_Word, Conv_fmt_flags_t, 108 Conv32_ehdr_flags_buf_t *); 109const char *conv64_ehdr_flags(Elf64_Half, Elf64_Word, Conv_fmt_flags_t, 110 Conv64_ehdr_flags_buf_t *); 111const char *conv32_ehdr_mach(Elf32_Half, int, Conv32_inv_buf_t *); 112const char *conv64_ehdr_mach(Elf64_Half, int, Conv64_inv_buf_t *); 113const char *conv32_ehdr_type(Elf32_Half, int, Conv32_inv_buf_t *); 114const char *conv64_ehdr_type(Elf64_Half, int, Conv64_inv_buf_t *); 115const char *conv32_ehdr_vers(Elf32_Word, int, Conv32_inv_buf_t *); 116const char *conv64_ehdr_vers(Elf64_Word, int, Conv64_inv_buf_t *); 117const char *conv32_invalid_val(Conv32_inv_buf_t *, Elf32_Word, int); 118const char *conv64_invalid_val(Conv64_inv_buf_t *, Elf64_Xword, int); 119const char *conv32_phdr_flags(Word, Conv_fmt_flags_t, 120 Conv32_phdr_flags_buf_t *); 121const char *conv64_phdr_flags(Word, Conv_fmt_flags_t, 122 Conv64_phdr_flags_buf_t *); 123const char *conv32_phdr_type(Elf32_Half, Word, int, Conv32_inv_buf_t *); 124const char *conv64_phdr_type(Elf64_Half, Word, int, Conv64_inv_buf_t *); 125const char *conv32_reject_desc(Rej_desc *, Conv32_reject_desc_buf_t *); 126const char *conv64_reject_desc(Rej_desc *, Conv64_reject_desc_buf_t *); 127const char *conv32_reloc_type(Half, Word, int, Conv32_inv_buf_t *); 128const char *conv64_reloc_type(Half, Word, int, Conv64_inv_buf_t *); 129const char *conv32_reloc_type_static(Half, Word, int); 130const char *conv64_reloc_type_static(Half, Word, int); 131const char *conv32_reloc_386_type(Word, int, Conv32_inv_buf_t *); 132const char *conv64_reloc_386_type(Word, int, Conv64_inv_buf_t *); 133const char *conv32_reloc_amd64_type(Word, int, Conv32_inv_buf_t *); 134const char *conv64_reloc_amd64_type(Word, int, Conv64_inv_buf_t *); 135const char *conv32_reloc_SPARC_type(Word, int, Conv32_inv_buf_t *); 136const char *conv64_reloc_SPARC_type(Word, int, Conv64_inv_buf_t *); 137const char *conv32_sec_flags(Elf32_Word, Conv_fmt_flags_t, 138 Conv32_sec_flags_buf_t *); 139const char *conv64_sec_flags(Elf64_Xword, Conv_fmt_flags_t, 140 Conv64_sec_flags_buf_t *); 141const char *conv32_sec_linkinfo(Elf32_Word, Elf32_Word, 142 Conv32_inv_buf_t *); 143const char *conv64_sec_linkinfo(Elf64_Word, Elf64_Xword, 144 Conv64_inv_buf_t *); 145const char *conv32_sec_type(Elf32_Half, Elf32_Word, int, 146 Conv32_inv_buf_t *); 147const char *conv64_sec_type(Elf64_Half, Elf64_Word, int, 148 Conv64_inv_buf_t *); 149const char *conv32_sym_info_bind(uchar_t, int, Conv32_inv_buf_t *); 150const char *conv64_sym_info_bind(uchar_t, int, Conv64_inv_buf_t *); 151const char *conv32_sym_info_type(Elf32_Half, uchar_t, int, 152 Conv32_inv_buf_t *); 153const char *conv64_sym_info_type(Elf64_Half, uchar_t, int, 154 Conv64_inv_buf_t *); 155const char *conv32_sym_shndx(Elf32_Half, Conv32_inv_buf_t *); 156const char *conv64_sym_shndx(Elf64_Half, Conv64_inv_buf_t *); 157const char *conv32_sym_other(uchar_t, Conv32_inv_buf_t *); 158const char *conv64_sym_other(uchar_t, Conv64_inv_buf_t *); 159const char *conv32_sym_value(Elf32_Half, uchar_t, Elf32_Addr, 160 Conv32_inv_buf_t *); 161const char *conv64_sym_value(Elf64_Half, uchar_t, Elf64_Addr, 162 Conv64_inv_buf_t *); 163const char *conv32_sym_SPARC_value(Elf32_Addr, int, Conv32_inv_buf_t *); 164const char *conv64_sym_SPARC_value(Elf64_Addr, int, Conv64_inv_buf_t *); 165