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