xref: /titanic_50/usr/src/cmd/sgs/include/conv.h (revision de777a601dfef76d8d54837de77dc672dce47498)
17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * CDDL HEADER START
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
55aefb655Srie  * Common Development and Distribution License (the "License").
65aefb655Srie  * You may not use this file except in compliance with the License.
77c478bd9Sstevel@tonic-gate  *
87c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
107c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
117c478bd9Sstevel@tonic-gate  * and limitations under the License.
127c478bd9Sstevel@tonic-gate  *
137c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
147c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
167c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
177c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
187c478bd9Sstevel@tonic-gate  *
197c478bd9Sstevel@tonic-gate  * CDDL HEADER END
207c478bd9Sstevel@tonic-gate  */
215aefb655Srie 
227c478bd9Sstevel@tonic-gate /*
237c478bd9Sstevel@tonic-gate  *	Copyright (c) 1988 AT&T
247c478bd9Sstevel@tonic-gate  *	  All Rights Reserved
257c478bd9Sstevel@tonic-gate  *
2602ca3e02Srie  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
277c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
287c478bd9Sstevel@tonic-gate  */
297c478bd9Sstevel@tonic-gate 
307c478bd9Sstevel@tonic-gate #ifndef	_CONV_H
317c478bd9Sstevel@tonic-gate #define	_CONV_H
327c478bd9Sstevel@tonic-gate 
337c478bd9Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
347c478bd9Sstevel@tonic-gate 
357c478bd9Sstevel@tonic-gate /*
367c478bd9Sstevel@tonic-gate  * Global include file for conversion library.
377c478bd9Sstevel@tonic-gate  */
387c478bd9Sstevel@tonic-gate 
397c478bd9Sstevel@tonic-gate #include <stdlib.h>
407c478bd9Sstevel@tonic-gate #include <libelf.h>
417c478bd9Sstevel@tonic-gate #include <dlfcn.h>
427c478bd9Sstevel@tonic-gate #include <libld.h>
437c478bd9Sstevel@tonic-gate #include <sgs.h>
447c478bd9Sstevel@tonic-gate #include <machdep.h>
457c478bd9Sstevel@tonic-gate 
467c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
477c478bd9Sstevel@tonic-gate extern "C" {
487c478bd9Sstevel@tonic-gate #endif
497c478bd9Sstevel@tonic-gate 
507c478bd9Sstevel@tonic-gate /*
517c478bd9Sstevel@tonic-gate  * Configuration features available - maintained here (instead of debug.h)
527c478bd9Sstevel@tonic-gate  * to save libconv from having to include debug.h which results in numerous
537c478bd9Sstevel@tonic-gate  * "declared but not used or defined" lint errors.
547c478bd9Sstevel@tonic-gate  */
557c478bd9Sstevel@tonic-gate #define	CONF_EDLIBPATH	0x000100	/* ELF default library path */
567c478bd9Sstevel@tonic-gate #define	CONF_ESLIBPATH	0x000200	/* ELF secure library path */
577c478bd9Sstevel@tonic-gate #define	CONF_ADLIBPATH	0x000400	/* AOUT default library path */
587c478bd9Sstevel@tonic-gate #define	CONF_ASLIBPATH	0x000800	/* AOUT secure library path */
597c478bd9Sstevel@tonic-gate #define	CONF_DIRCFG	0x001000	/* directory configuration available */
607c478bd9Sstevel@tonic-gate #define	CONF_OBJALT	0x002000	/* object alternatives available */
617c478bd9Sstevel@tonic-gate #define	CONF_MEMRESV	0x004000	/* memory reservation required */
627c478bd9Sstevel@tonic-gate #define	CONF_ENVS	0x008000	/* environment variables available */
637c478bd9Sstevel@tonic-gate #define	CONF_FLTR	0x010000	/* filter information available */
647c478bd9Sstevel@tonic-gate #define	CONF_FEATMSK	0xffff00
657c478bd9Sstevel@tonic-gate 
667c478bd9Sstevel@tonic-gate /*
67*de777a60Sab196087  * Buffer types:
685aefb655Srie  *
69*de777a60Sab196087  * Many of the routines in this module require the user to supply a
70*de777a60Sab196087  * buffer into which the desired strings may be written. These are
71*de777a60Sab196087  * all arrays of characters, and might be defined as simple arrays
72*de777a60Sab196087  * of char. The problem with that approach is that when such an array
73*de777a60Sab196087  * is passed to a function, the C language considers it to have the
74*de777a60Sab196087  * type (char *), without any regard to its length. Not all of our
75*de777a60Sab196087  * buffers have the same length, and we want to ensure that the compiler
76*de777a60Sab196087  * will refuse to compile code that passes the wrong type of buffer to
77*de777a60Sab196087  * a given routine. The solution is to define the buffers as unions
78*de777a60Sab196087  * that contain the needed array, and then to pass the given union
79*de777a60Sab196087  * by address. The compiler will catch attempts to pass the wrong type
80*de777a60Sab196087  * of pointer, and the size of a structure/union is implicit in its type.
81*de777a60Sab196087  *
82*de777a60Sab196087  * A nice side effect of this approach is that we can use a union with
83*de777a60Sab196087  * multiple buffers to handle the cases where a given routine needs
84*de777a60Sab196087  * more than one type of buffer. The end result is a single buffer large
85*de777a60Sab196087  * enough to handle any of the subcases, but no larger.
865aefb655Srie  */
875aefb655Srie 
885aefb655Srie /*
89*de777a60Sab196087  * Size of buffer used by conv_invalid_val():
90*de777a60Sab196087  *
91*de777a60Sab196087  * Various values that can't be matched to a symbolic definition are converted
92*de777a60Sab196087  * to a numeric string.
93*de777a60Sab196087  *
94*de777a60Sab196087  * The buffer size reflects the maximum number of digits needed to
95*de777a60Sab196087  * display an integer as text, plus a trailing null, and with room for
96*de777a60Sab196087  * a leading "0x" if hexidecimal display is selected.
972926dd2eSrie  */
98*de777a60Sab196087 #define	CONV32_INV_BUFSIZE	12
99*de777a60Sab196087 typedef union {
100*de777a60Sab196087 	char			buf[CONV32_INV_BUFSIZE];
101*de777a60Sab196087 } Conv32_inv_buf_t;
102*de777a60Sab196087 
103*de777a60Sab196087 #define	CONV64_INV_BUFSIZE	22
104*de777a60Sab196087 typedef union {
105*de777a60Sab196087 	char			buf[CONV64_INV_BUFSIZE];
106*de777a60Sab196087 } Conv64_inv_buf_t;
107*de777a60Sab196087 
108*de777a60Sab196087 
109*de777a60Sab196087 
110*de777a60Sab196087 /* conv_ehdr_flags() */
111*de777a60Sab196087 #define	CONF_EHDR_FLAGS_BASE_BUFSIZE	69
112*de777a60Sab196087 #define	CONV32_EHDR_FLAGS_BUFSIZE	\
113*de777a60Sab196087 	(CONF_EHDR_FLAGS_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
114*de777a60Sab196087 typedef union {
115*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
116*de777a60Sab196087 	char			buf[CONV32_EHDR_FLAGS_BUFSIZE];
117*de777a60Sab196087 } Conv32_ehdr_flags_buf_t;
118*de777a60Sab196087 
119*de777a60Sab196087 #define	CONV64_EHDR_FLAGS_BUFSIZE	\
120*de777a60Sab196087 	(CONF_EHDR_FLAGS_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
121*de777a60Sab196087 typedef union {
122*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
123*de777a60Sab196087 	char			buf[CONV64_EHDR_FLAGS_BUFSIZE];
124*de777a60Sab196087 } Conv64_ehdr_flags_buf_t;
125*de777a60Sab196087 
126*de777a60Sab196087 
127*de777a60Sab196087 /* conv_reject_desc() */
128*de777a60Sab196087 typedef union {
129*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
130*de777a60Sab196087 	Conv32_ehdr_flags_buf_t	flags_buf;
131*de777a60Sab196087 } Conv32_reject_desc_buf_t;
132*de777a60Sab196087 
133*de777a60Sab196087 typedef union {
134*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
135*de777a60Sab196087 	Conv64_ehdr_flags_buf_t	flags_buf;
136*de777a60Sab196087 } Conv64_reject_desc_buf_t;
137*de777a60Sab196087 
138*de777a60Sab196087 
139*de777a60Sab196087 /*
140*de777a60Sab196087  * conv_cap_val_hw1()
141*de777a60Sab196087  *
142*de777a60Sab196087  * This size is based on the maximum number of hardware capabilities
143*de777a60Sab196087  * that exist.  See common/elfcap.
144*de777a60Sab196087  */
145*de777a60Sab196087 #define	CONV_CAP_VAL_HW1_BUFSIZE	195
146*de777a60Sab196087 
147*de777a60Sab196087 typedef union {
148*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
149*de777a60Sab196087 	char			buf[CONV_CAP_VAL_HW1_BUFSIZE];
150*de777a60Sab196087 } Conv32_cap_val_hw1_buf_t;
151*de777a60Sab196087 
152*de777a60Sab196087 typedef union {
153*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
154*de777a60Sab196087 	char			buf[CONV_CAP_VAL_HW1_BUFSIZE];
155*de777a60Sab196087 } Conv64_cap_val_hw1_buf_t;
156*de777a60Sab196087 
157*de777a60Sab196087 
158*de777a60Sab196087 /*
159*de777a60Sab196087  * conv_cap_val_sf1()
160*de777a60Sab196087  *
161*de777a60Sab196087  * This size is based on the maximum number of software capabilities
162*de777a60Sab196087  * that exist.  See common/elfcap.
163*de777a60Sab196087  */
164*de777a60Sab196087 #define	CONV_CAP_VAL_SF1_BUFSIZE	45
165*de777a60Sab196087 
166*de777a60Sab196087 typedef union {
167*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
168*de777a60Sab196087 	char			buf[CONV_CAP_VAL_SF1_BUFSIZE];
169*de777a60Sab196087 } Conv32_cap_val_sf1_buf_t;
170*de777a60Sab196087 
171*de777a60Sab196087 typedef union {
172*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
173*de777a60Sab196087 	char			buf[CONV_CAP_VAL_SF1_BUFSIZE];
174*de777a60Sab196087 } Conv64_cap_val_sf1_buf_t;
175*de777a60Sab196087 
176*de777a60Sab196087 
177*de777a60Sab196087 
178*de777a60Sab196087 /* conv_cap_val_buf() */
179*de777a60Sab196087 typedef union {
180*de777a60Sab196087 	Conv32_inv_buf_t		inv_buf;
181*de777a60Sab196087 	Conv32_cap_val_hw1_buf_t	cap_val_hw1_buf;
182*de777a60Sab196087 	Conv32_cap_val_sf1_buf_t	cap_val_sf1_buf;
183*de777a60Sab196087 } Conv32_cap_val_buf_t;
184*de777a60Sab196087 
185*de777a60Sab196087 typedef union {
186*de777a60Sab196087 	Conv64_inv_buf_t		inv_buf;
187*de777a60Sab196087 	Conv64_cap_val_hw1_buf_t	cap_val_hw1_buf;
188*de777a60Sab196087 	Conv64_cap_val_sf1_buf_t	cap_val_sf1_buf;
189*de777a60Sab196087 } Conv64_cap_val_buf_t;
190*de777a60Sab196087 
191*de777a60Sab196087 
192*de777a60Sab196087 /* conv_config_feat() */
193*de777a60Sab196087 #define	CONV_CONFIG_FEAT_BUFSIZE	195
194*de777a60Sab196087 
195*de777a60Sab196087 typedef union {
196*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
197*de777a60Sab196087 	char			buf[CONV_CONFIG_FEAT_BUFSIZE];
198*de777a60Sab196087 } Conv32_config_feat_buf_t;
199*de777a60Sab196087 
200*de777a60Sab196087 typedef union {
201*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
202*de777a60Sab196087 	char			buf[CONV_CONFIG_FEAT_BUFSIZE];
203*de777a60Sab196087 } Conv64_config_feat_buf_t;
204*de777a60Sab196087 
205*de777a60Sab196087 
206*de777a60Sab196087 /* conv_config_obj() */
207*de777a60Sab196087 #define	CONV_CONFIG_OBJ_BUFSIZE		154
208*de777a60Sab196087 
209*de777a60Sab196087 typedef union {
210*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
211*de777a60Sab196087 	char			buf[CONV_CONFIG_OBJ_BUFSIZE];
212*de777a60Sab196087 } Conv32_config_obj_buf_t;
213*de777a60Sab196087 
214*de777a60Sab196087 typedef union {
215*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
216*de777a60Sab196087 	char			buf[CONV_CONFIG_OBJ_BUFSIZE];
217*de777a60Sab196087 } Conv64_config_obj_buf_t;
218*de777a60Sab196087 
219*de777a60Sab196087 
220*de777a60Sab196087 /* conv_dl_mode() */
221*de777a60Sab196087 #define	CONV_DL_MODE_BUFSIZE		122
222*de777a60Sab196087 
223*de777a60Sab196087 typedef union {
224*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
225*de777a60Sab196087 	char			buf[CONV_DL_MODE_BUFSIZE];
226*de777a60Sab196087 } Conv32_dl_mode_buf_t;
227*de777a60Sab196087 
228*de777a60Sab196087 typedef union {
229*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
230*de777a60Sab196087 	char			buf[CONV_DL_MODE_BUFSIZE];
231*de777a60Sab196087 } Conv64_dl_mode_buf_t;
232*de777a60Sab196087 
233*de777a60Sab196087 
234*de777a60Sab196087 /* conv_dl_flag() */
235*de777a60Sab196087 #define	CONV_DL_FLAG_BUFSIZE		195
236*de777a60Sab196087 
237*de777a60Sab196087 typedef union {
238*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
239*de777a60Sab196087 	char			buf[CONV_DL_FLAG_BUFSIZE];
240*de777a60Sab196087 } Conv32_dl_flag_buf_t;
241*de777a60Sab196087 
242*de777a60Sab196087 typedef union {
243*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
244*de777a60Sab196087 	char			buf[CONV_DL_FLAG_BUFSIZE];
245*de777a60Sab196087 } Conv64_dl_flag_buf_t;
246*de777a60Sab196087 
247*de777a60Sab196087 
248*de777a60Sab196087 /* conv_grphdl_flags() */
249*de777a60Sab196087 #define	CONV_GRPHDL_FLAGS_BUFSIZE	80
250*de777a60Sab196087 
251*de777a60Sab196087 typedef union {
252*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
253*de777a60Sab196087 	char			buf[CONV_GRPHDL_FLAGS_BUFSIZE];
254*de777a60Sab196087 } Conv32_grphdl_flags_buf_t;
255*de777a60Sab196087 
256*de777a60Sab196087 typedef union {
257*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
258*de777a60Sab196087 	char			buf[CONV_GRPHDL_FLAGS_BUFSIZE];
259*de777a60Sab196087 } Conv64_grphdl_flags_buf_t;
260*de777a60Sab196087 
261*de777a60Sab196087 
262*de777a60Sab196087 /* conv_grpdesc_flags() */
263*de777a60Sab196087 #define	CONV_GRPDESC_FLAGS_BUFSIZE	80
264*de777a60Sab196087 
265*de777a60Sab196087 typedef union {
266*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
267*de777a60Sab196087 	char			buf[CONV_GRPDESC_FLAGS_BUFSIZE];
268*de777a60Sab196087 } Conv32_grpdesc_flags_buf_t;
269*de777a60Sab196087 
270*de777a60Sab196087 typedef union {
271*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
272*de777a60Sab196087 	char			buf[CONV_GRPDESC_FLAGS_BUFSIZE];
273*de777a60Sab196087 } Conv64_grpdesc_flags_buf_t;
274*de777a60Sab196087 
275*de777a60Sab196087 
276*de777a60Sab196087 /* conv_seg_flags() */
277*de777a60Sab196087 #define	CONV_SEG_FLAGS_BUFSIZE		186
278*de777a60Sab196087 
279*de777a60Sab196087 typedef union {
280*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
281*de777a60Sab196087 	char			buf[CONV_SEG_FLAGS_BUFSIZE];
282*de777a60Sab196087 } Conv32_seg_flags_buf_t;
283*de777a60Sab196087 
284*de777a60Sab196087 typedef union {
285*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
286*de777a60Sab196087 	char			buf[CONV_SEG_FLAGS_BUFSIZE];
287*de777a60Sab196087 } Conv64_seg_flags_buf_t;
288*de777a60Sab196087 
289*de777a60Sab196087 
290*de777a60Sab196087 /* conv_dyn_posflag1() */
291*de777a60Sab196087 #define	CONF_DYN_POSFLAG1_BASE_BUFSIZE	23
292*de777a60Sab196087 #define	CONV32_DYN_POSFLAG1_BUFSIZE	\
293*de777a60Sab196087 	(CONF_DYN_POSFLAG1_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
294*de777a60Sab196087 typedef union {
295*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
296*de777a60Sab196087 	char			buf[CONV32_DYN_POSFLAG1_BUFSIZE];
297*de777a60Sab196087 } Conv32_dyn_posflag1_buf_t;
298*de777a60Sab196087 
299*de777a60Sab196087 #define	CONV64_DYN_POSFLAG1_BUFSIZE	\
300*de777a60Sab196087 	(CONF_DYN_POSFLAG1_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
301*de777a60Sab196087 typedef union {
302*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
303*de777a60Sab196087 	char			buf[CONV64_DYN_POSFLAG1_BUFSIZE];
304*de777a60Sab196087 } Conv64_dyn_posflag1_buf_t;
305*de777a60Sab196087 
306*de777a60Sab196087 
307*de777a60Sab196087 /* conv_dyn_flag() */
308*de777a60Sab196087 #define	CONF_DYN_FLAG_BASE_BUFSIZE	48
309*de777a60Sab196087 #define	CONV32_DYN_FLAG_BUFSIZE	\
310*de777a60Sab196087 	(CONF_DYN_FLAG_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
311*de777a60Sab196087 typedef union {
312*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
313*de777a60Sab196087 	char			buf[CONV32_DYN_FLAG_BUFSIZE];
314*de777a60Sab196087 } Conv32_dyn_flag_buf_t;
315*de777a60Sab196087 
316*de777a60Sab196087 #define	CONV64_DYN_FLAG_BUFSIZE	\
317*de777a60Sab196087 	(CONF_DYN_FLAG_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
318*de777a60Sab196087 typedef union {
319*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
320*de777a60Sab196087 	char			buf[CONV64_DYN_FLAG_BUFSIZE];
321*de777a60Sab196087 } Conv64_dyn_flag_buf_t;
322*de777a60Sab196087 
323*de777a60Sab196087 
324*de777a60Sab196087 /* conv_dyn_flag1() */
325*de777a60Sab196087 #define	CONF_DYN_FLAG1_BASE_BUFSIZE	223
326*de777a60Sab196087 #define	CONV32_DYN_FLAG1_BUFSIZE	\
327*de777a60Sab196087 	(CONF_DYN_FLAG1_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
328*de777a60Sab196087 typedef union {
329*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
330*de777a60Sab196087 	char			buf[CONV32_DYN_FLAG1_BUFSIZE];
331*de777a60Sab196087 } Conv32_dyn_flag1_buf_t;
332*de777a60Sab196087 
333*de777a60Sab196087 #define	CONV64_DYN_FLAG1_BUFSIZE	\
334*de777a60Sab196087 	(CONF_DYN_FLAG1_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
335*de777a60Sab196087 typedef union {
336*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
337*de777a60Sab196087 	char			buf[CONV64_DYN_FLAG1_BUFSIZE];
338*de777a60Sab196087 } Conv64_dyn_flag1_buf_t;
339*de777a60Sab196087 
340*de777a60Sab196087 
341*de777a60Sab196087 /* conv_dyn_feature1() */
342*de777a60Sab196087 #define	CONF_DYN_FEATURE1_BASE_BUFSIZE	20
343*de777a60Sab196087 #define	CONV32_DYN_FEATURE1_BUFSIZE	\
344*de777a60Sab196087 	(CONF_DYN_FEATURE1_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
345*de777a60Sab196087 typedef union {
346*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
347*de777a60Sab196087 	char			buf[CONV32_DYN_FEATURE1_BUFSIZE];
348*de777a60Sab196087 } Conv32_dyn_feature1_buf_t;
349*de777a60Sab196087 
350*de777a60Sab196087 #define	CONV64_DYN_FEATURE1_BUFSIZE	\
351*de777a60Sab196087 	(CONF_DYN_FEATURE1_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
352*de777a60Sab196087 typedef union {
353*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
354*de777a60Sab196087 	char			buf[CONV64_DYN_FEATURE1_BUFSIZE];
355*de777a60Sab196087 } Conv64_dyn_feature1_buf_t;
356*de777a60Sab196087 
357*de777a60Sab196087 
358*de777a60Sab196087 /* conv_bnd_type() */
359*de777a60Sab196087 #define	CONF_BND_TYPE_BASE_BUFSIZE	29
360*de777a60Sab196087 #define	CONV32_BND_TYPE_BUFSIZE	\
361*de777a60Sab196087 	(CONF_BND_TYPE_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
362*de777a60Sab196087 typedef union {
363*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
364*de777a60Sab196087 	char			buf[CONV32_BND_TYPE_BUFSIZE];
365*de777a60Sab196087 } Conv32_bnd_type_buf_t;
366*de777a60Sab196087 
367*de777a60Sab196087 #define	CONV64_BND_TYPE_BUFSIZE	\
368*de777a60Sab196087 	(CONF_BND_TYPE_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
369*de777a60Sab196087 typedef union {
370*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
371*de777a60Sab196087 	char			buf[CONV64_BND_TYPE_BUFSIZE];
372*de777a60Sab196087 } Conv64_bnd_type_buf_t;
373*de777a60Sab196087 
374*de777a60Sab196087 
375*de777a60Sab196087 /* conv_bnd_obj() */
376*de777a60Sab196087 #define	CONF_BND_OBJ_BASE_BUFSIZE	38
377*de777a60Sab196087 #define	CONV32_BND_OBJ_BUFSIZE	\
378*de777a60Sab196087 	(CONF_BND_OBJ_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
379*de777a60Sab196087 typedef union {
380*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
381*de777a60Sab196087 	char			buf[CONV32_BND_OBJ_BUFSIZE];
382*de777a60Sab196087 } Conv32_bnd_obj_buf_t;
383*de777a60Sab196087 
384*de777a60Sab196087 #define	CONV64_BND_OBJ_BUFSIZE	\
385*de777a60Sab196087 	(CONF_BND_OBJ_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
386*de777a60Sab196087 typedef union {
387*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
388*de777a60Sab196087 	char			buf[CONV64_BND_OBJ_BUFSIZE];
389*de777a60Sab196087 } Conv64_bnd_obj_buf_t;
390*de777a60Sab196087 
391*de777a60Sab196087 
392*de777a60Sab196087 /* conv_phdr_flags() */
393*de777a60Sab196087 #define	CONF_PHDR_FLAGS_BASE_BUFSIZE	35
394*de777a60Sab196087 #define	CONV32_PHDR_FLAGS_BUFSIZE	\
395*de777a60Sab196087 	(CONF_PHDR_FLAGS_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
396*de777a60Sab196087 typedef union {
397*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
398*de777a60Sab196087 	char			buf[CONV32_PHDR_FLAGS_BUFSIZE];
399*de777a60Sab196087 } Conv32_phdr_flags_buf_t;
400*de777a60Sab196087 
401*de777a60Sab196087 #define	CONV64_PHDR_FLAGS_BUFSIZE	\
402*de777a60Sab196087 	(CONF_PHDR_FLAGS_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
403*de777a60Sab196087 typedef union {
404*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
405*de777a60Sab196087 	char			buf[CONV64_PHDR_FLAGS_BUFSIZE];
406*de777a60Sab196087 } Conv64_phdr_flags_buf_t;
407*de777a60Sab196087 
408*de777a60Sab196087 
409*de777a60Sab196087 /* conv_sec_flags() */
410*de777a60Sab196087 #define	CONF_SEC_FLAGS_BASE_BUFSIZE	168
411*de777a60Sab196087 #define	CONV32_SEC_FLAGS_BUFSIZE	\
412*de777a60Sab196087 	(CONF_SEC_FLAGS_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
413*de777a60Sab196087 typedef union {
414*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
415*de777a60Sab196087 	char			buf[CONV32_SEC_FLAGS_BUFSIZE];
416*de777a60Sab196087 } Conv32_sec_flags_buf_t;
417*de777a60Sab196087 
418*de777a60Sab196087 #define	CONV64_SEC_FLAGS_BUFSIZE	\
419*de777a60Sab196087 	(CONF_SEC_FLAGS_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
420*de777a60Sab196087 typedef union {
421*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
422*de777a60Sab196087 	char			buf[CONV64_SEC_FLAGS_BUFSIZE];
423*de777a60Sab196087 } Conv64_sec_flags_buf_t;
424*de777a60Sab196087 
425*de777a60Sab196087 
426*de777a60Sab196087 /* conv_dwarf_ehe() */
427*de777a60Sab196087 #define	CONV_DWARF_EHE_BUFSIZE		33
428*de777a60Sab196087 typedef union {
429*de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
430*de777a60Sab196087 	char			buf[CONV_DWARF_EHE_BUFSIZE];
431*de777a60Sab196087 } Conv32_dwarf_ehe_buf_t;
432*de777a60Sab196087 typedef union {
433*de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
434*de777a60Sab196087 	char			buf[CONV_DWARF_EHE_BUFSIZE];
435*de777a60Sab196087 } Conv64_dwarf_ehe_buf_t;
436*de777a60Sab196087 
437*de777a60Sab196087 
438*de777a60Sab196087 
439*de777a60Sab196087 /*
440*de777a60Sab196087  * Generic names for class specific buffer types above
441*de777a60Sab196087  */
442*de777a60Sab196087 #if	defined(_ELF64)
443*de777a60Sab196087 #define	CONV_INV_BUFSIZE		CONV64_INV_BUFSIZE
444*de777a60Sab196087 #define	CONV_EHDR_FLAGS_BUFSIZE		CONV64_EHDR_FLAGS_BUFSIZE
445*de777a60Sab196087 #define	CONV_DYN_POSFLAG1_BUFSIZE	CONV64_DYN_POSFLAG1_BUFSIZE
446*de777a60Sab196087 #define	CONV_DYN_FLAG_BUFSIZE		CONV64_DYN_FLAG_BUFSIZE
447*de777a60Sab196087 #define	CONV_DYN_FLAG1_BUFSIZE		CONV64_DYN_FLAG1_BUFSIZE
448*de777a60Sab196087 #define	CONV_DYN_FEATURE1_BUFSIZE	CONV64_DYN_FEATURE1_BUFSIZE
449*de777a60Sab196087 #define	CONV_BND_TYPE_BUFSIZE		CONV64_BND_TYPE_BUFSIZE
450*de777a60Sab196087 #define	CONV_BND_OBJ_BUFSIZE		CONV64_BND_OBJ_BUFSIZE
451*de777a60Sab196087 #define	CONV_PHDR_FLAGS_BUFSIZE		CONV64_PHDR_FLAGS_BUFSIZE
452*de777a60Sab196087 #define	CONV_SEC_FLAGS_BUFSIZE		CONV64_SEC_FLAGS_BUFSIZE
453*de777a60Sab196087 
454*de777a60Sab196087 #define	Conv_inv_buf_t			Conv64_inv_buf_t
455*de777a60Sab196087 #define	Conv_ehdr_flags_buf_t		Conv64_ehdr_flags_buf_t
456*de777a60Sab196087 #define	Conv_reject_desc_buf_t		Conv64_reject_desc_buf_t
457*de777a60Sab196087 #define	Conv_cap_val_hw1_buf_t		Conv64_cap_val_hw1_buf_t
458*de777a60Sab196087 #define	Conv_cap_val_sf1_buf_t		Conv64_cap_val_sf1_buf_t
459*de777a60Sab196087 #define	Conv_cap_val_buf_t		Conv64_cap_val_buf_t
460*de777a60Sab196087 #define	Conv_config_feat_buf_t		Conv64_config_feat_buf_t
461*de777a60Sab196087 #define	Conv_config_obj_buf_t		Conv64_config_obj_buf_t
462*de777a60Sab196087 #define	Conv_dl_mode_buf_t		Conv64_dl_mode_buf_t
463*de777a60Sab196087 #define	Conv_dl_flag_buf_t		Conv64_dl_flag_buf_t
464*de777a60Sab196087 #define	Conv_grphdl_flags_buf_t		Conv64_grphdl_flags_buf_t
465*de777a60Sab196087 #define	Conv_grpdesc_flags_buf_t	Conv64_grpdesc_flags_buf_t
466*de777a60Sab196087 #define	Conv_seg_flags_buf_t		Conv64_seg_flags_buf_t
467*de777a60Sab196087 #define	Conv_dyn_posflag1_buf_t		Conv64_dyn_posflag1_buf_t
468*de777a60Sab196087 #define	Conv_dyn_flag_buf_t		Conv64_dyn_flag_buf_t
469*de777a60Sab196087 #define	Conv_dyn_flag1_buf_t		Conv64_dyn_flag1_buf_t
470*de777a60Sab196087 #define	Conv_dyn_feature1_buf_t		Conv64_dyn_feature1_buf_t
471*de777a60Sab196087 #define	Conv_bnd_type_buf_t		Conv64_bnd_type_buf_t
472*de777a60Sab196087 #define	Conv_bnd_obj_buf_t		Conv64_bnd_obj_buf_t
473*de777a60Sab196087 #define	Conv_phdr_flags_buf_t		Conv64_phdr_flags_buf_t
474*de777a60Sab196087 #define	Conv_sec_flags_buf_t		Conv64_sec_flags_buf_t
475*de777a60Sab196087 #define	Conv_dwarf_ehe_buf_t		Conv64_dwarf_ehe_buf_t
476*de777a60Sab196087 #else
477*de777a60Sab196087 #define	CONV_INV_BUFSIZE		CONV32_INV_BUFSIZE
478*de777a60Sab196087 #define	CONV_EHDR_FLAGS_BUFSIZE		CONV32_EHDR_FLAGS_BUFSIZE
479*de777a60Sab196087 #define	CONV_DYN_POSFLAG1_BUFSIZE	CONV32_DYN_POSFLAG1_BUFSIZE
480*de777a60Sab196087 #define	CONV_DYN_FLAG_BUFSIZE		CONV32_DYN_FLAG_BUFSIZE
481*de777a60Sab196087 #define	CONV_DYN_FLAG1_BUFSIZE		CONV32_DYN_FLAG1_BUFSIZE
482*de777a60Sab196087 #define	CONV_DYN_FEATURE1_BUFSIZE	CONV32_DYN_FEATURE1_BUFSIZE
483*de777a60Sab196087 #define	CONV_BND_TYPE_BUFSIZE		CONV32_BND_TYPE_BUFSIZE
484*de777a60Sab196087 #define	CONV_BND_OBJ_BUFSIZE		CONV32_BND_OBJ_BUFSIZE
485*de777a60Sab196087 #define	CONV_PHDR_FLAGS_BUFSIZE		CONV32_PHDR_FLAGS_BUFSIZE
486*de777a60Sab196087 #define	CONV_SEC_FLAGS_BUFSIZE		CONV32_SEC_FLAGS_BUFSIZE
487*de777a60Sab196087 
488*de777a60Sab196087 #define	Conv_inv_buf_t			Conv32_inv_buf_t
489*de777a60Sab196087 #define	Conv_ehdr_flags_buf_t		Conv32_ehdr_flags_buf_t
490*de777a60Sab196087 #define	Conv_reject_desc_buf_t		Conv32_reject_desc_buf_t
491*de777a60Sab196087 #define	Conv_cap_val_hw1_buf_t		Conv32_cap_val_hw1_buf_t
492*de777a60Sab196087 #define	Conv_cap_val_sf1_buf_t		Conv32_cap_val_sf1_buf_t
493*de777a60Sab196087 #define	Conv_cap_val_buf_t		Conv32_cap_val_buf_t
494*de777a60Sab196087 #define	Conv_config_feat_buf_t		Conv32_config_feat_buf_t
495*de777a60Sab196087 #define	Conv_config_obj_buf_t		Conv32_config_obj_buf_t
496*de777a60Sab196087 #define	Conv_dl_mode_buf_t		Conv32_dl_mode_buf_t
497*de777a60Sab196087 #define	Conv_dl_flag_buf_t		Conv32_dl_flag_buf_t
498*de777a60Sab196087 #define	Conv_grphdl_flags_buf_t		Conv32_grphdl_flags_buf_t
499*de777a60Sab196087 #define	Conv_grpdesc_flags_buf_t	Conv32_grpdesc_flags_buf_t
500*de777a60Sab196087 #define	Conv_seg_flags_buf_t		Conv32_seg_flags_buf_t
501*de777a60Sab196087 #define	Conv_dyn_posflag1_buf_t		Conv32_dyn_posflag1_buf_t
502*de777a60Sab196087 #define	Conv_dyn_flag_buf_t		Conv32_dyn_flag_buf_t
503*de777a60Sab196087 #define	Conv_dyn_flag1_buf_t		Conv32_dyn_flag1_buf_t
504*de777a60Sab196087 #define	Conv_dyn_feature1_buf_t		Conv32_dyn_feature1_buf_t
505*de777a60Sab196087 #define	Conv_bnd_type_buf_t		Conv32_bnd_type_buf_t
506*de777a60Sab196087 #define	Conv_bnd_obj_buf_t		Conv32_bnd_obj_buf_t
507*de777a60Sab196087 #define	Conv_phdr_flags_buf_t		Conv32_phdr_flags_buf_t
508*de777a60Sab196087 #define	Conv_sec_flags_buf_t		Conv32_sec_flags_buf_t
509*de777a60Sab196087 #define	Conv_dwarf_ehe_buf_t		Conv32_dwarf_ehe_buf_t
510*de777a60Sab196087 #endif
511*de777a60Sab196087 
512*de777a60Sab196087 
513*de777a60Sab196087 
5142926dd2eSrie 
5152926dd2eSrie /*
516c13de8f6Sab196087  * Flags that alter standard formatting for conversion routines.
5175aefb655Srie  */
518ba4e3c84Sab196087 #define	CONV_FMT_DECIMAL	0x01	/* conv_invalid_val() should print */
519c13de8f6Sab196087 					/*    integer print as decimal */
520c13de8f6Sab196087 					/*    (default is hex) */
521ba4e3c84Sab196087 #define	CONV_FMT_SPACE		0x02	/* conv_invalid_val() should append */
522c13de8f6Sab196087 					/*    a space after the number.  */
523ba4e3c84Sab196087 #define	CONV_FMT_ALTDUMP	0x04	/* Output strings using the versions */
524c13de8f6Sab196087 					/*    used by the dump program. */
525ba4e3c84Sab196087 #define	CONV_FMT_ALTFILE	0x08	/* Output strings in the form used */
526c13de8f6Sab196087 					/*    by the file(1) command */
527ba4e3c84Sab196087 #define	CONV_FMT_ALTCRLE	0x10	/* Output strings in the form used */
528ba4e3c84Sab196087 					/*    by the crle(1) command */
529c13de8f6Sab196087 
530c13de8f6Sab196087 /*
531c13de8f6Sab196087  * Mask of CONV_FMT bits that reflect a desire to use alternate strings.
532c13de8f6Sab196087  */
533c13de8f6Sab196087 #define	CONV_FMTALTMASK	(CONV_FMT_ALTDUMP | CONV_FMT_ALTFILE)
5345aefb655Srie 
5355aefb655Srie /*
5365aefb655Srie  * The expansion of bit-field data items is driven from a value descriptor and
5375aefb655Srie  * the conv_expn_field() routine.
5385aefb655Srie  */
5395aefb655Srie typedef struct {
5405aefb655Srie 	Xword		v_val;		/* expansion value */
5415aefb655Srie 	const char	*v_msg;		/* associated message string */
5425aefb655Srie } Val_desc;
5435aefb655Srie 
5445aefb655Srie /*
545ba4e3c84Sab196087  * conv_expn_field() is willing to supply default strings for the
546ba4e3c84Sab196087  * prefix, separator, and suffix arguments, if they are passed as NULL.
547ba4e3c84Sab196087  * The caller needs to know how much room to allow for these items.
548ba4e3c84Sab196087  * These values supply those sizes.
549ba4e3c84Sab196087  */
550ba4e3c84Sab196087 #define	CONV_EXPN_FIELD_DEF_PREFIX_SIZE	2	/* Default is "[ " */
551ba4e3c84Sab196087 #define	CONV_EXPN_FIELD_DEF_SEP_SIZE	1	/* Default is " " */
552ba4e3c84Sab196087 #define	CONV_EXPN_FIELD_DEF_SUFFIX_SIZE	2	/* Default is " ]" */
553ba4e3c84Sab196087 
554ba4e3c84Sab196087 /*
555ba4e3c84Sab196087  * conv_expn_field() requires a large number of inputs, many of which
556ba4e3c84Sab196087  * can be NULL to accept default behavior. An argument of the following
557ba4e3c84Sab196087  * type is used to supply them.
558ba4e3c84Sab196087  */
559ba4e3c84Sab196087 typedef struct {
560ba4e3c84Sab196087 	char *buf;		/* Buffer to receive generated string */
561ba4e3c84Sab196087 	size_t bufsize;		/* sizeof(buf) */
562ba4e3c84Sab196087 	const Val_desc *vdp;	/* Array of value descriptors, giving the */
563ba4e3c84Sab196087 				/*	possible bit values, and their */
564ba4e3c84Sab196087 				/*	corresponding strings. Note that the */
565ba4e3c84Sab196087 				/*	final element must contain only NULL */
566ba4e3c84Sab196087 				/*	values. This terminates the list. */
567ba4e3c84Sab196087 	const char **lead_str;	/* NULL, or array of pointers to strings to */
568ba4e3c84Sab196087 				/*	be output at the head of the list. */
569ba4e3c84Sab196087 				/*	Last entry must be NULL. */
570ba4e3c84Sab196087 	Xword oflags;		/* Bits for which output strings are desired */
571ba4e3c84Sab196087 	Xword rflags;		/* Bits for which a numeric value should be */
572ba4e3c84Sab196087 				/*	output if vdp does not provide str. */
573ba4e3c84Sab196087 				/*	Must be a proper subset of oflags */
574ba4e3c84Sab196087 	const char *prefix;	/* NULL, or string to prefix output with */
575ba4e3c84Sab196087 				/*	If NULL, "[ " is used. */
576ba4e3c84Sab196087 	const char *sep;	/* NULL, or string to separate output items */
577ba4e3c84Sab196087 				/*	with. If NULL, " " is used. */
578ba4e3c84Sab196087 	const char *suffix;	/* NULL, or string to suffix output with */
579ba4e3c84Sab196087 				/*	If NULL, " ]" is used. */
580ba4e3c84Sab196087 } CONV_EXPN_FIELD_ARG;
581ba4e3c84Sab196087 
582ba4e3c84Sab196087 /*
5835aefb655Srie  * Define all generic interfaces.
5847c478bd9Sstevel@tonic-gate  */
5857010c12aSrie extern	uchar_t		conv_check_native(char **, char **);
586*de777a60Sab196087 extern	const char	*conv_config_feat(int, Conv_config_feat_buf_t *);
587*de777a60Sab196087 extern	const char	*conv_config_obj(ushort_t, Conv_config_obj_buf_t *);
5885aefb655Srie extern	const char	*conv_config_upm(const char *, const char *,
5895aefb655Srie 			    const char *, size_t);
590*de777a60Sab196087 extern	const char	*conv_def_tag(Symref, Conv_inv_buf_t *);
5915aefb655Srie extern	const char	*conv_demangle_name(const char *);
592*de777a60Sab196087 extern	const char	*conv_dl_flag(int, int, Conv_dl_flag_buf_t *);
593*de777a60Sab196087 extern	const char	*conv_dl_mode(int, int, Conv_dl_mode_buf_t *);
594*de777a60Sab196087 extern	const char	*conv_dwarf_ehe(uint_t, Conv_dwarf_ehe_buf_t *);
595*de777a60Sab196087 extern	const char	*conv_elfdata_type(Elf_Type, Conv_inv_buf_t *);
596*de777a60Sab196087 extern	const char	*conv_grphdl_flags(uint_t, Conv_grphdl_flags_buf_t *);
597*de777a60Sab196087 extern	const char	*conv_grpdesc_flags(uint_t, Conv_grpdesc_flags_buf_t *);
5987c478bd9Sstevel@tonic-gate extern	Isa_desc	*conv_isalist(void);
5997c478bd9Sstevel@tonic-gate extern	const char	*conv_lddstub(int);
600*de777a60Sab196087 extern	const char	*conv_seg_flags(Half, Conv_seg_flags_buf_t *);
6017c478bd9Sstevel@tonic-gate extern	int		conv_sys_eclass();
6027c478bd9Sstevel@tonic-gate extern	Uts_desc	*conv_uts(void);
6035aefb655Srie extern	const char	*conv_ver_flags(Half);
604*de777a60Sab196087 extern	const char	*conv_ver_index(Versym, int, Conv_inv_buf_t *);
605*de777a60Sab196087 
6065aefb655Srie 
6075aefb655Srie /*
6085aefb655Srie  * Define all class specific routines.
6095aefb655Srie  */
6105aefb655Srie #if	defined(_ELF64)
6115aefb655Srie #define	conv_bnd_obj		conv64_bnd_obj
6125aefb655Srie #define	conv_bnd_type		conv64_bnd_type
6135aefb655Srie #define	conv_cap_tag		conv64_cap_tag
6145aefb655Srie #define	conv_cap_val		conv64_cap_val
6155aefb655Srie #define	conv_cap_val_hw1	conv64_cap_val_hw1
6165aefb655Srie #define	conv_cap_val_sf1	conv64_cap_val_sf1
6175aefb655Srie #define	conv_dyn_feature1	conv64_dyn_feature1
6185aefb655Srie #define	conv_dyn_flag1		conv64_dyn_flag1
6195aefb655Srie #define	conv_dyn_flag		conv64_dyn_flag
6205aefb655Srie #define	conv_dyn_posflag1	conv64_dyn_posflag1
6215aefb655Srie #define	conv_dyn_tag		conv64_dyn_tag
6225aefb655Srie #define	conv_ehdr_class		conv64_ehdr_class
6235aefb655Srie #define	conv_ehdr_data		conv64_ehdr_data
6245aefb655Srie #define	conv_ehdr_flags		conv64_ehdr_flags
6255aefb655Srie #define	conv_ehdr_mach		conv64_ehdr_mach
6263244bcaaSab196087 #define	conv_ehdr_osabi		conv64_ehdr_osabi
6275aefb655Srie #define	conv_ehdr_type		conv64_ehdr_type
6285aefb655Srie #define	conv_ehdr_vers		conv64_ehdr_vers
6295aefb655Srie #define	conv_expn_field		conv64_expn_field
6305aefb655Srie #define	conv_invalid_val	conv64_invalid_val
6315aefb655Srie #define	conv_phdr_flags		conv64_phdr_flags
6325aefb655Srie #define	conv_phdr_type		conv64_phdr_type
6335aefb655Srie #define	conv_reject_desc	conv64_reject_desc
6345aefb655Srie #define	conv_reloc_type		conv64_reloc_type
635*de777a60Sab196087 #define	conv_reloc_type_static	conv64_reloc_type_static
6365aefb655Srie #define	conv_reloc_386_type	conv64_reloc_386_type
6375aefb655Srie #define	conv_reloc_amd64_type	conv64_reloc_amd64_type
6385aefb655Srie #define	conv_reloc_SPARC_type	conv64_reloc_SPARC_type
6395aefb655Srie #define	conv_sec_flags		conv64_sec_flags
6407010c12aSrie #define	conv_sec_linkinfo	conv64_sec_linkinfo
6415aefb655Srie #define	conv_sec_type		conv64_sec_type
6425aefb655Srie #define	conv_sym_info_bind	conv64_sym_info_bind
6435aefb655Srie #define	conv_sym_info_type	conv64_sym_info_type
6445aefb655Srie #define	conv_sym_shndx		conv64_sym_shndx
6455aefb655Srie #define	conv_sym_other		conv64_sym_other
6465aefb655Srie #define	conv_sym_value		conv64_sym_value
6475aefb655Srie #define	conv_sym_SPARC_value	conv64_sym_SPARC_value
6485aefb655Srie #else
6495aefb655Srie #define	conv_bnd_obj		conv32_bnd_obj
6505aefb655Srie #define	conv_bnd_type		conv32_bnd_type
6515aefb655Srie #define	conv_cap_tag		conv32_cap_tag
6525aefb655Srie #define	conv_cap_val		conv32_cap_val
6535aefb655Srie #define	conv_cap_val_hw1	conv32_cap_val_hw1
6545aefb655Srie #define	conv_cap_val_sf1	conv32_cap_val_sf1
6555aefb655Srie #define	conv_dyn_feature1	conv32_dyn_feature1
6565aefb655Srie #define	conv_dyn_flag1		conv32_dyn_flag1
6575aefb655Srie #define	conv_dyn_flag		conv32_dyn_flag
6585aefb655Srie #define	conv_dyn_posflag1	conv32_dyn_posflag1
6595aefb655Srie #define	conv_dyn_tag		conv32_dyn_tag
6605aefb655Srie #define	conv_ehdr_class		conv32_ehdr_class
6615aefb655Srie #define	conv_ehdr_data		conv32_ehdr_data
6625aefb655Srie #define	conv_ehdr_flags		conv32_ehdr_flags
6635aefb655Srie #define	conv_ehdr_mach		conv32_ehdr_mach
6643244bcaaSab196087 #define	conv_ehdr_osabi		conv32_ehdr_osabi
6655aefb655Srie #define	conv_ehdr_type		conv32_ehdr_type
6665aefb655Srie #define	conv_ehdr_vers		conv32_ehdr_vers
6675aefb655Srie #define	conv_expn_field		conv32_expn_field
6685aefb655Srie #define	conv_invalid_val	conv32_invalid_val
6695aefb655Srie #define	conv_phdr_flags		conv32_phdr_flags
6705aefb655Srie #define	conv_phdr_type		conv32_phdr_type
6715aefb655Srie #define	conv_reject_desc	conv32_reject_desc
6725aefb655Srie #define	conv_reloc_type		conv32_reloc_type
673*de777a60Sab196087 #define	conv_reloc_type_static	conv32_reloc_type_static
6745aefb655Srie #define	conv_reloc_386_type	conv32_reloc_386_type
6755aefb655Srie #define	conv_reloc_amd64_type	conv32_reloc_amd64_type
6765aefb655Srie #define	conv_reloc_SPARC_type	conv32_reloc_SPARC_type
6775aefb655Srie #define	conv_sec_flags		conv32_sec_flags
6787010c12aSrie #define	conv_sec_linkinfo	conv32_sec_linkinfo
6795aefb655Srie #define	conv_sec_type		conv32_sec_type
6805aefb655Srie #define	conv_sym_info_bind	conv32_sym_info_bind
6815aefb655Srie #define	conv_sym_info_type	conv32_sym_info_type
6825aefb655Srie #define	conv_sym_shndx		conv32_sym_shndx
6835aefb655Srie #define	conv_sym_other		conv32_sym_other
6845aefb655Srie #define	conv_sym_value		conv32_sym_value
6855aefb655Srie #define	conv_sym_SPARC_value	conv32_sym_SPARC_value
6865aefb655Srie #endif
6875aefb655Srie 
688*de777a60Sab196087 extern	const char	*conv_bnd_obj(uint_t, Conv_bnd_obj_buf_t *);
689*de777a60Sab196087 extern	const char	*conv_bnd_type(uint_t, Conv_bnd_type_buf_t *);
690*de777a60Sab196087 extern	const char	*conv_cap_tag(Xword, Conv_inv_buf_t *);
691*de777a60Sab196087 extern	const char	*conv_cap_val(Xword, Xword, Half, Conv_cap_val_buf_t *);
692*de777a60Sab196087 extern	const char	*conv_cap_val_hw1(Xword, Half,
693*de777a60Sab196087 			    Conv_cap_val_hw1_buf_t *);
694*de777a60Sab196087 extern	const char	*conv_cap_val_sf1(Xword, Half,
695*de777a60Sab196087 			    Conv_cap_val_sf1_buf_t *);
696*de777a60Sab196087 extern	const char	*conv_dyn_flag1(Xword, Conv_dyn_flag1_buf_t *);
697*de777a60Sab196087 extern	const char	*conv_dyn_flag(Xword, int, Conv_dyn_flag_buf_t *);
698*de777a60Sab196087 extern	const char	*conv_dyn_posflag1(Xword, int,
699*de777a60Sab196087 			    Conv_dyn_posflag1_buf_t *);
700*de777a60Sab196087 extern	const char	*conv_dyn_tag(Xword, Half, int, Conv_inv_buf_t *);
701*de777a60Sab196087 extern	const char	*conv_dyn_feature1(Xword, int,
702*de777a60Sab196087 			    Conv_dyn_feature1_buf_t *);
703*de777a60Sab196087 extern	const char	*conv_ehdr_class(uchar_t, int, Conv_inv_buf_t *);
704*de777a60Sab196087 extern	const char	*conv_ehdr_data(uchar_t, int, Conv_inv_buf_t *);
705*de777a60Sab196087 extern	const char	*conv_ehdr_flags(Half, Word, Conv_ehdr_flags_buf_t *);
706*de777a60Sab196087 extern	const char	*conv_ehdr_mach(Half, int, Conv_inv_buf_t *);
707*de777a60Sab196087 extern	const char	*conv_ehdr_osabi(uchar_t, int, Conv_inv_buf_t *);
708*de777a60Sab196087 extern	const char	*conv_ehdr_type(Half, int, Conv_inv_buf_t *);
709*de777a60Sab196087 extern	const char	*conv_ehdr_vers(Word, int, Conv_inv_buf_t *);
710ba4e3c84Sab196087 extern	int		conv_expn_field(CONV_EXPN_FIELD_ARG *);
711*de777a60Sab196087 extern	const char	*conv_invalid_val(Conv_inv_buf_t *, Xword, int);
712*de777a60Sab196087 extern	const char	*conv_phdr_flags(Word, Conv_phdr_flags_buf_t *);
713*de777a60Sab196087 extern	const char	*conv_phdr_type(Half, Word, int, Conv_inv_buf_t *);
714*de777a60Sab196087 extern	const char	*conv_reject_desc(Rej_desc *, Conv_reject_desc_buf_t *);
715*de777a60Sab196087 extern	const char	*conv_reloc_type(Half, Word, int, Conv_inv_buf_t *);
716*de777a60Sab196087 extern	const char	*conv_reloc_type_static(Half, Word, int);
717*de777a60Sab196087 extern	const char	*conv_reloc_386_type(Word, int, Conv_inv_buf_t *);
718*de777a60Sab196087 extern	const char	*conv_reloc_amd64_type(Word, int, Conv_inv_buf_t *);
719*de777a60Sab196087 extern	const char	*conv_reloc_SPARC_type(Word, int, Conv_inv_buf_t *);
720*de777a60Sab196087 extern	const char	*conv_sec_flags(Xword, Conv_sec_flags_buf_t *);
721*de777a60Sab196087 extern	const char	*conv_sec_linkinfo(Word, Xword, Conv_inv_buf_t *);
722*de777a60Sab196087 extern	const char	*conv_sec_type(Half, Word, int, Conv_inv_buf_t *);
723*de777a60Sab196087 extern	const char	*conv_sym_info_bind(uchar_t, int, Conv_inv_buf_t *);
724*de777a60Sab196087 extern	const char	*conv_sym_info_type(Half, uchar_t, int,
725*de777a60Sab196087 			    Conv_inv_buf_t *);
726*de777a60Sab196087 extern	const char	*conv_sym_shndx(Half, Conv_inv_buf_t *);
727*de777a60Sab196087 extern	const char	*conv_sym_other(uchar_t, Conv_inv_buf_t *);
728*de777a60Sab196087 extern	const char	*conv_sym_value(Half, uchar_t, Addr, Conv_inv_buf_t *);
729*de777a60Sab196087 extern	const char	*conv_sym_SPARC_value(Addr, int, Conv_inv_buf_t *);
7307c478bd9Sstevel@tonic-gate 
7317c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
7327c478bd9Sstevel@tonic-gate }
7337c478bd9Sstevel@tonic-gate #endif
7347c478bd9Sstevel@tonic-gate 
7357c478bd9Sstevel@tonic-gate #endif /* _CONV_H */
736