xref: /titanic_50/usr/src/cmd/sgs/include/conv.h (revision 7e16fca05dfbcfd32c2ebc9e4d1abdac1cd8657c)
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  *
26*7e16fca0SAli Bahrami  * Copyright 2009 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 /*
347c478bd9Sstevel@tonic-gate  * Global include file for conversion library.
357c478bd9Sstevel@tonic-gate  */
367c478bd9Sstevel@tonic-gate 
377c478bd9Sstevel@tonic-gate #include <stdlib.h>
387c478bd9Sstevel@tonic-gate #include <libelf.h>
397c478bd9Sstevel@tonic-gate #include <dlfcn.h>
407c478bd9Sstevel@tonic-gate #include <libld.h>
417c478bd9Sstevel@tonic-gate #include <sgs.h>
427c478bd9Sstevel@tonic-gate 
437c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
447c478bd9Sstevel@tonic-gate extern "C" {
457c478bd9Sstevel@tonic-gate #endif
467c478bd9Sstevel@tonic-gate 
477c478bd9Sstevel@tonic-gate /*
487c478bd9Sstevel@tonic-gate  * Configuration features available - maintained here (instead of debug.h)
497c478bd9Sstevel@tonic-gate  * to save libconv from having to include debug.h which results in numerous
507c478bd9Sstevel@tonic-gate  * "declared but not used or defined" lint errors.
517c478bd9Sstevel@tonic-gate  */
527c478bd9Sstevel@tonic-gate #define	CONF_EDLIBPATH	0x000100	/* ELF default library path */
537c478bd9Sstevel@tonic-gate #define	CONF_ESLIBPATH	0x000200	/* ELF secure library path */
547c478bd9Sstevel@tonic-gate #define	CONF_ADLIBPATH	0x000400	/* AOUT default library path */
557c478bd9Sstevel@tonic-gate #define	CONF_ASLIBPATH	0x000800	/* AOUT secure library path */
567c478bd9Sstevel@tonic-gate #define	CONF_DIRCFG	0x001000	/* directory configuration available */
577c478bd9Sstevel@tonic-gate #define	CONF_OBJALT	0x002000	/* object alternatives available */
587c478bd9Sstevel@tonic-gate #define	CONF_MEMRESV	0x004000	/* memory reservation required */
597c478bd9Sstevel@tonic-gate #define	CONF_ENVS	0x008000	/* environment variables available */
607c478bd9Sstevel@tonic-gate #define	CONF_FLTR	0x010000	/* filter information available */
617c478bd9Sstevel@tonic-gate #define	CONF_FEATMSK	0xffff00
627c478bd9Sstevel@tonic-gate 
637c478bd9Sstevel@tonic-gate /*
64de777a60Sab196087  * Buffer types:
655aefb655Srie  *
66de777a60Sab196087  * Many of the routines in this module require the user to supply a
67de777a60Sab196087  * buffer into which the desired strings may be written. These are
68de777a60Sab196087  * all arrays of characters, and might be defined as simple arrays
69de777a60Sab196087  * of char. The problem with that approach is that when such an array
70de777a60Sab196087  * is passed to a function, the C language considers it to have the
71de777a60Sab196087  * type (char *), without any regard to its length. Not all of our
72de777a60Sab196087  * buffers have the same length, and we want to ensure that the compiler
73de777a60Sab196087  * will refuse to compile code that passes the wrong type of buffer to
74de777a60Sab196087  * a given routine. The solution is to define the buffers as unions
75de777a60Sab196087  * that contain the needed array, and then to pass the given union
76de777a60Sab196087  * by address. The compiler will catch attempts to pass the wrong type
77de777a60Sab196087  * of pointer, and the size of a structure/union is implicit in its type.
78de777a60Sab196087  *
79de777a60Sab196087  * A nice side effect of this approach is that we can use a union with
80de777a60Sab196087  * multiple buffers to handle the cases where a given routine needs
81de777a60Sab196087  * more than one type of buffer. The end result is a single buffer large
82de777a60Sab196087  * enough to handle any of the subcases, but no larger.
835aefb655Srie  */
845aefb655Srie 
855aefb655Srie /*
86de777a60Sab196087  * Size of buffer used by conv_invalid_val():
87de777a60Sab196087  *
88de777a60Sab196087  * Various values that can't be matched to a symbolic definition are converted
89de777a60Sab196087  * to a numeric string.
90de777a60Sab196087  *
91de777a60Sab196087  * The buffer size reflects the maximum number of digits needed to
92de777a60Sab196087  * display an integer as text, plus a trailing null, and with room for
93de777a60Sab196087  * a leading "0x" if hexidecimal display is selected.
942926dd2eSrie  */
95de777a60Sab196087 #define	CONV32_INV_BUFSIZE	12
96de777a60Sab196087 typedef union {
97de777a60Sab196087 	char			buf[CONV32_INV_BUFSIZE];
98de777a60Sab196087 } Conv32_inv_buf_t;
99de777a60Sab196087 
100de777a60Sab196087 #define	CONV64_INV_BUFSIZE	22
101de777a60Sab196087 typedef union {
102de777a60Sab196087 	char			buf[CONV64_INV_BUFSIZE];
103de777a60Sab196087 } Conv64_inv_buf_t;
104de777a60Sab196087 
105de777a60Sab196087 
106de777a60Sab196087 
107de777a60Sab196087 /* conv_ehdr_flags() */
108d29b2c44Sab196087 #define	CONV_EHDR_FLAGS_BASE_BUFSIZE	69
109de777a60Sab196087 #define	CONV32_EHDR_FLAGS_BUFSIZE	\
110d29b2c44Sab196087 	(CONV_EHDR_FLAGS_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
111de777a60Sab196087 typedef union {
112de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
113de777a60Sab196087 	char			buf[CONV32_EHDR_FLAGS_BUFSIZE];
114de777a60Sab196087 } Conv32_ehdr_flags_buf_t;
115de777a60Sab196087 
116de777a60Sab196087 #define	CONV64_EHDR_FLAGS_BUFSIZE	\
117d29b2c44Sab196087 	(CONV_EHDR_FLAGS_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
118de777a60Sab196087 typedef union {
119de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
120de777a60Sab196087 	char			buf[CONV64_EHDR_FLAGS_BUFSIZE];
121de777a60Sab196087 } Conv64_ehdr_flags_buf_t;
122de777a60Sab196087 
123de777a60Sab196087 
124de777a60Sab196087 /* conv_reject_desc() */
125de777a60Sab196087 typedef union {
126de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
127de777a60Sab196087 	Conv32_ehdr_flags_buf_t	flags_buf;
128de777a60Sab196087 } Conv32_reject_desc_buf_t;
129de777a60Sab196087 
130de777a60Sab196087 typedef union {
131de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
132de777a60Sab196087 	Conv64_ehdr_flags_buf_t	flags_buf;
133de777a60Sab196087 } Conv64_reject_desc_buf_t;
134de777a60Sab196087 
135de777a60Sab196087 
136de777a60Sab196087 /*
137de777a60Sab196087  * conv_cap_val_hw1()
138de777a60Sab196087  *
139de777a60Sab196087  * This size is based on the maximum number of hardware capabilities
140de777a60Sab196087  * that exist.  See common/elfcap.
141de777a60Sab196087  */
142de777a60Sab196087 #define	CONV_CAP_VAL_HW1_BUFSIZE	195
143de777a60Sab196087 
144de777a60Sab196087 typedef union {
145de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
146de777a60Sab196087 	char			buf[CONV_CAP_VAL_HW1_BUFSIZE];
147de777a60Sab196087 } Conv32_cap_val_hw1_buf_t;
148de777a60Sab196087 
149de777a60Sab196087 typedef union {
150de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
151de777a60Sab196087 	char			buf[CONV_CAP_VAL_HW1_BUFSIZE];
152de777a60Sab196087 } Conv64_cap_val_hw1_buf_t;
153de777a60Sab196087 
154de777a60Sab196087 
155de777a60Sab196087 /*
156de777a60Sab196087  * conv_cap_val_sf1()
157de777a60Sab196087  *
158de777a60Sab196087  * This size is based on the maximum number of software capabilities
159de777a60Sab196087  * that exist.  See common/elfcap.
160de777a60Sab196087  */
161de777a60Sab196087 #define	CONV_CAP_VAL_SF1_BUFSIZE	45
162de777a60Sab196087 
163de777a60Sab196087 typedef union {
164de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
165de777a60Sab196087 	char			buf[CONV_CAP_VAL_SF1_BUFSIZE];
166de777a60Sab196087 } Conv32_cap_val_sf1_buf_t;
167de777a60Sab196087 
168de777a60Sab196087 typedef union {
169de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
170de777a60Sab196087 	char			buf[CONV_CAP_VAL_SF1_BUFSIZE];
171de777a60Sab196087 } Conv64_cap_val_sf1_buf_t;
172de777a60Sab196087 
173de777a60Sab196087 
174de777a60Sab196087 
175de777a60Sab196087 /* conv_cap_val_buf() */
176de777a60Sab196087 typedef union {
177de777a60Sab196087 	Conv32_inv_buf_t		inv_buf;
178de777a60Sab196087 	Conv32_cap_val_hw1_buf_t	cap_val_hw1_buf;
179de777a60Sab196087 	Conv32_cap_val_sf1_buf_t	cap_val_sf1_buf;
180de777a60Sab196087 } Conv32_cap_val_buf_t;
181de777a60Sab196087 
182de777a60Sab196087 typedef union {
183de777a60Sab196087 	Conv64_inv_buf_t		inv_buf;
184de777a60Sab196087 	Conv64_cap_val_hw1_buf_t	cap_val_hw1_buf;
185de777a60Sab196087 	Conv64_cap_val_sf1_buf_t	cap_val_sf1_buf;
186de777a60Sab196087 } Conv64_cap_val_buf_t;
187de777a60Sab196087 
188de777a60Sab196087 
189de777a60Sab196087 /* conv_config_feat() */
1906a074c93Sab196087 #define	CONV_CONFIG_FEAT_BUFSIZE	194
191de777a60Sab196087 
192de777a60Sab196087 typedef union {
193de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
194de777a60Sab196087 	char			buf[CONV_CONFIG_FEAT_BUFSIZE];
195de777a60Sab196087 } Conv32_config_feat_buf_t;
196de777a60Sab196087 
197de777a60Sab196087 typedef union {
198de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
199de777a60Sab196087 	char			buf[CONV_CONFIG_FEAT_BUFSIZE];
200de777a60Sab196087 } Conv64_config_feat_buf_t;
201de777a60Sab196087 
202de777a60Sab196087 
203de777a60Sab196087 /* conv_config_obj() */
204de777a60Sab196087 #define	CONV_CONFIG_OBJ_BUFSIZE		154
205de777a60Sab196087 
206de777a60Sab196087 typedef union {
207de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
208de777a60Sab196087 	char			buf[CONV_CONFIG_OBJ_BUFSIZE];
209de777a60Sab196087 } Conv32_config_obj_buf_t;
210de777a60Sab196087 
211de777a60Sab196087 typedef union {
212de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
213de777a60Sab196087 	char			buf[CONV_CONFIG_OBJ_BUFSIZE];
214de777a60Sab196087 } Conv64_config_obj_buf_t;
215de777a60Sab196087 
216de777a60Sab196087 
217de777a60Sab196087 /* conv_dl_mode() */
218de777a60Sab196087 #define	CONV_DL_MODE_BUFSIZE		122
219de777a60Sab196087 
220de777a60Sab196087 typedef union {
221de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
222de777a60Sab196087 	char			buf[CONV_DL_MODE_BUFSIZE];
223de777a60Sab196087 } Conv32_dl_mode_buf_t;
224de777a60Sab196087 
225de777a60Sab196087 typedef union {
226de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
227de777a60Sab196087 	char			buf[CONV_DL_MODE_BUFSIZE];
228de777a60Sab196087 } Conv64_dl_mode_buf_t;
229de777a60Sab196087 
230de777a60Sab196087 
231de777a60Sab196087 /* conv_dl_flag() */
2326a074c93Sab196087 #define	CONV_DL_FLAG_BUFSIZE		175
233de777a60Sab196087 
234de777a60Sab196087 typedef union {
235de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
236de777a60Sab196087 	char			buf[CONV_DL_FLAG_BUFSIZE];
237de777a60Sab196087 } Conv32_dl_flag_buf_t;
238de777a60Sab196087 
239de777a60Sab196087 typedef union {
240de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
241de777a60Sab196087 	char			buf[CONV_DL_FLAG_BUFSIZE];
242de777a60Sab196087 } Conv64_dl_flag_buf_t;
243de777a60Sab196087 
244de777a60Sab196087 
245de777a60Sab196087 /* conv_grphdl_flags() */
2468af2c5b9Srie #define	CONV_GRPHDL_FLAGS_BUFSIZE	82
247de777a60Sab196087 
248de777a60Sab196087 typedef union {
249de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
250de777a60Sab196087 	char			buf[CONV_GRPHDL_FLAGS_BUFSIZE];
251de777a60Sab196087 } Conv32_grphdl_flags_buf_t;
252de777a60Sab196087 
253de777a60Sab196087 typedef union {
254de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
255de777a60Sab196087 	char			buf[CONV_GRPHDL_FLAGS_BUFSIZE];
256de777a60Sab196087 } Conv64_grphdl_flags_buf_t;
257de777a60Sab196087 
258de777a60Sab196087 
259de777a60Sab196087 /* conv_grpdesc_flags() */
2608af2c5b9Srie #define	CONV_GRPDESC_FLAGS_BUFSIZE	92
261de777a60Sab196087 
262de777a60Sab196087 typedef union {
263de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
264de777a60Sab196087 	char			buf[CONV_GRPDESC_FLAGS_BUFSIZE];
265de777a60Sab196087 } Conv32_grpdesc_flags_buf_t;
266de777a60Sab196087 
267de777a60Sab196087 typedef union {
268de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
269de777a60Sab196087 	char			buf[CONV_GRPDESC_FLAGS_BUFSIZE];
270de777a60Sab196087 } Conv64_grpdesc_flags_buf_t;
271de777a60Sab196087 
272de777a60Sab196087 
273de777a60Sab196087 /* conv_seg_flags() */
274de777a60Sab196087 #define	CONV_SEG_FLAGS_BUFSIZE		186
275de777a60Sab196087 
276de777a60Sab196087 typedef union {
277de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
278de777a60Sab196087 	char			buf[CONV_SEG_FLAGS_BUFSIZE];
279de777a60Sab196087 } Conv32_seg_flags_buf_t;
280de777a60Sab196087 
281de777a60Sab196087 typedef union {
282de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
283de777a60Sab196087 	char			buf[CONV_SEG_FLAGS_BUFSIZE];
284de777a60Sab196087 } Conv64_seg_flags_buf_t;
285de777a60Sab196087 
286de777a60Sab196087 
287de777a60Sab196087 /* conv_dyn_posflag1() */
288d29b2c44Sab196087 #define	CONV_DYN_POSFLAG1_BASE_BUFSIZE	23
289de777a60Sab196087 #define	CONV32_DYN_POSFLAG1_BUFSIZE	\
290d29b2c44Sab196087 	(CONV_DYN_POSFLAG1_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
291de777a60Sab196087 typedef union {
292de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
293de777a60Sab196087 	char			buf[CONV32_DYN_POSFLAG1_BUFSIZE];
294de777a60Sab196087 } Conv32_dyn_posflag1_buf_t;
295de777a60Sab196087 
296de777a60Sab196087 #define	CONV64_DYN_POSFLAG1_BUFSIZE	\
297d29b2c44Sab196087 	(CONV_DYN_POSFLAG1_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
298de777a60Sab196087 typedef union {
299de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
300de777a60Sab196087 	char			buf[CONV64_DYN_POSFLAG1_BUFSIZE];
301de777a60Sab196087 } Conv64_dyn_posflag1_buf_t;
302de777a60Sab196087 
303de777a60Sab196087 
304de777a60Sab196087 /* conv_dyn_flag() */
305d29b2c44Sab196087 #define	CONV_DYN_FLAG_BASE_BUFSIZE	48
306de777a60Sab196087 #define	CONV32_DYN_FLAG_BUFSIZE	\
307d29b2c44Sab196087 	(CONV_DYN_FLAG_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
308de777a60Sab196087 typedef union {
309de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
310de777a60Sab196087 	char			buf[CONV32_DYN_FLAG_BUFSIZE];
311de777a60Sab196087 } Conv32_dyn_flag_buf_t;
312de777a60Sab196087 
313de777a60Sab196087 #define	CONV64_DYN_FLAG_BUFSIZE	\
314d29b2c44Sab196087 	(CONV_DYN_FLAG_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
315de777a60Sab196087 typedef union {
316de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
317de777a60Sab196087 	char			buf[CONV64_DYN_FLAG_BUFSIZE];
318de777a60Sab196087 } Conv64_dyn_flag_buf_t;
319de777a60Sab196087 
320de777a60Sab196087 
321de777a60Sab196087 /* conv_dyn_flag1() */
32260758829Srie #define	CONV_DYN_FLAG1_BASE_BUFSIZE	265
323de777a60Sab196087 #define	CONV32_DYN_FLAG1_BUFSIZE	\
324d29b2c44Sab196087 	(CONV_DYN_FLAG1_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
325de777a60Sab196087 typedef union {
326de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
327de777a60Sab196087 	char			buf[CONV32_DYN_FLAG1_BUFSIZE];
328de777a60Sab196087 } Conv32_dyn_flag1_buf_t;
329de777a60Sab196087 
330de777a60Sab196087 #define	CONV64_DYN_FLAG1_BUFSIZE	\
331d29b2c44Sab196087 	(CONV_DYN_FLAG1_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
332de777a60Sab196087 typedef union {
333de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
334de777a60Sab196087 	char			buf[CONV64_DYN_FLAG1_BUFSIZE];
335de777a60Sab196087 } Conv64_dyn_flag1_buf_t;
336de777a60Sab196087 
337de777a60Sab196087 
338de777a60Sab196087 /* conv_dyn_feature1() */
339d29b2c44Sab196087 #define	CONV_DYN_FEATURE1_BASE_BUFSIZE	20
340de777a60Sab196087 #define	CONV32_DYN_FEATURE1_BUFSIZE	\
341d29b2c44Sab196087 	(CONV_DYN_FEATURE1_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
342de777a60Sab196087 typedef union {
343de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
344de777a60Sab196087 	char			buf[CONV32_DYN_FEATURE1_BUFSIZE];
345de777a60Sab196087 } Conv32_dyn_feature1_buf_t;
346de777a60Sab196087 
347de777a60Sab196087 #define	CONV64_DYN_FEATURE1_BUFSIZE	\
348d29b2c44Sab196087 	(CONV_DYN_FEATURE1_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
349de777a60Sab196087 typedef union {
350de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
351de777a60Sab196087 	char			buf[CONV64_DYN_FEATURE1_BUFSIZE];
352de777a60Sab196087 } Conv64_dyn_feature1_buf_t;
353de777a60Sab196087 
354de777a60Sab196087 
355de777a60Sab196087 /* conv_bnd_type() */
356d29b2c44Sab196087 #define	CONV_BND_TYPE_BASE_BUFSIZE	29
357de777a60Sab196087 #define	CONV32_BND_TYPE_BUFSIZE	\
358d29b2c44Sab196087 	(CONV_BND_TYPE_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
359de777a60Sab196087 typedef union {
360de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
361de777a60Sab196087 	char			buf[CONV32_BND_TYPE_BUFSIZE];
362de777a60Sab196087 } Conv32_bnd_type_buf_t;
363de777a60Sab196087 
364de777a60Sab196087 #define	CONV64_BND_TYPE_BUFSIZE	\
365d29b2c44Sab196087 	(CONV_BND_TYPE_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
366de777a60Sab196087 typedef union {
367de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
368de777a60Sab196087 	char			buf[CONV64_BND_TYPE_BUFSIZE];
369de777a60Sab196087 } Conv64_bnd_type_buf_t;
370de777a60Sab196087 
371de777a60Sab196087 
372de777a60Sab196087 /* conv_bnd_obj() */
373d29b2c44Sab196087 #define	CONV_BND_OBJ_BASE_BUFSIZE	38
374de777a60Sab196087 #define	CONV32_BND_OBJ_BUFSIZE	\
375d29b2c44Sab196087 	(CONV_BND_OBJ_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
376de777a60Sab196087 typedef union {
377de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
378de777a60Sab196087 	char			buf[CONV32_BND_OBJ_BUFSIZE];
379de777a60Sab196087 } Conv32_bnd_obj_buf_t;
380de777a60Sab196087 
381de777a60Sab196087 #define	CONV64_BND_OBJ_BUFSIZE	\
382d29b2c44Sab196087 	(CONV_BND_OBJ_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
383de777a60Sab196087 typedef union {
384de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
385de777a60Sab196087 	char			buf[CONV64_BND_OBJ_BUFSIZE];
386de777a60Sab196087 } Conv64_bnd_obj_buf_t;
387de777a60Sab196087 
388de777a60Sab196087 
389de777a60Sab196087 /* conv_phdr_flags() */
390d29b2c44Sab196087 #define	CONV_PHDR_FLAGS_BASE_BUFSIZE	35
391de777a60Sab196087 #define	CONV32_PHDR_FLAGS_BUFSIZE	\
392d29b2c44Sab196087 	(CONV_PHDR_FLAGS_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
393de777a60Sab196087 typedef union {
394de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
395de777a60Sab196087 	char			buf[CONV32_PHDR_FLAGS_BUFSIZE];
396de777a60Sab196087 } Conv32_phdr_flags_buf_t;
397de777a60Sab196087 
398de777a60Sab196087 #define	CONV64_PHDR_FLAGS_BUFSIZE	\
399d29b2c44Sab196087 	(CONV_PHDR_FLAGS_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
400de777a60Sab196087 typedef union {
401de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
402de777a60Sab196087 	char			buf[CONV64_PHDR_FLAGS_BUFSIZE];
403de777a60Sab196087 } Conv64_phdr_flags_buf_t;
404de777a60Sab196087 
405de777a60Sab196087 
406de777a60Sab196087 /* conv_sec_flags() */
407d29b2c44Sab196087 #define	CONV_SEC_FLAGS_BASE_BUFSIZE	168
408de777a60Sab196087 #define	CONV32_SEC_FLAGS_BUFSIZE	\
409d29b2c44Sab196087 	(CONV_SEC_FLAGS_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
410de777a60Sab196087 typedef union {
411de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
412de777a60Sab196087 	char			buf[CONV32_SEC_FLAGS_BUFSIZE];
413de777a60Sab196087 } Conv32_sec_flags_buf_t;
414de777a60Sab196087 
415de777a60Sab196087 #define	CONV64_SEC_FLAGS_BUFSIZE	\
416d29b2c44Sab196087 	(CONV_SEC_FLAGS_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
417de777a60Sab196087 typedef union {
418de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
419de777a60Sab196087 	char			buf[CONV64_SEC_FLAGS_BUFSIZE];
420de777a60Sab196087 } Conv64_sec_flags_buf_t;
421de777a60Sab196087 
422de777a60Sab196087 
423de777a60Sab196087 /* conv_dwarf_ehe() */
424de777a60Sab196087 #define	CONV_DWARF_EHE_BUFSIZE		33
425de777a60Sab196087 typedef union {
426de777a60Sab196087 	Conv32_inv_buf_t	inv_buf;
427de777a60Sab196087 	char			buf[CONV_DWARF_EHE_BUFSIZE];
428de777a60Sab196087 } Conv32_dwarf_ehe_buf_t;
429de777a60Sab196087 typedef union {
430de777a60Sab196087 	Conv64_inv_buf_t	inv_buf;
431de777a60Sab196087 	char			buf[CONV_DWARF_EHE_BUFSIZE];
432de777a60Sab196087 } Conv64_dwarf_ehe_buf_t;
433de777a60Sab196087 
434de777a60Sab196087 
435d29b2c44Sab196087 /* conv_syminfo_flags() */
436d29b2c44Sab196087 #define	CONV_SYMINFO_FLAGS_BASE_BUFSIZE	36
437d29b2c44Sab196087 #define	CONV32_SYMINFO_FLAGS_BUFSIZE	\
438d29b2c44Sab196087 	(CONV_SYMINFO_FLAGS_BASE_BUFSIZE + CONV32_INV_BUFSIZE)
439d29b2c44Sab196087 typedef union {
440d29b2c44Sab196087 	Conv32_inv_buf_t	inv_buf;
441d29b2c44Sab196087 	char			buf[CONV32_SYMINFO_FLAGS_BUFSIZE];
442d29b2c44Sab196087 } Conv32_syminfo_flags_buf_t;
443d29b2c44Sab196087 
444d29b2c44Sab196087 #define	CONV64_SYMINFO_FLAGS_BUFSIZE	\
445d29b2c44Sab196087 	(CONV_SYMINFO_FLAGS_BASE_BUFSIZE + CONV64_INV_BUFSIZE)
446d29b2c44Sab196087 typedef union {
447d29b2c44Sab196087 	Conv64_inv_buf_t	inv_buf;
448d29b2c44Sab196087 	char			buf[CONV64_SYMINFO_FLAGS_BUFSIZE];
449d29b2c44Sab196087 } Conv64_syminfo_flags_buf_t;
450d29b2c44Sab196087 
451d29b2c44Sab196087 
452c6c9aed4Sab196087 /* conv_cnote_pr_flags() */
453c6c9aed4Sab196087 #define	CONV_CNOTE_PR_FLAGS_BUFSIZE	244
454c6c9aed4Sab196087 typedef union {
455c6c9aed4Sab196087 	Conv32_inv_buf_t	inv_buf;
456c6c9aed4Sab196087 	char			buf[CONV_CNOTE_PR_FLAGS_BUFSIZE];
457c6c9aed4Sab196087 } Conv32_cnote_pr_flags_buf_t;
458c6c9aed4Sab196087 typedef union {
459c6c9aed4Sab196087 	Conv64_inv_buf_t	inv_buf;
460c6c9aed4Sab196087 	char			buf[CONV_CNOTE_PR_FLAGS_BUFSIZE];
461c6c9aed4Sab196087 } Conv64_cnote_pr_flags_buf_t;
462c6c9aed4Sab196087 
463c6c9aed4Sab196087 
464c6c9aed4Sab196087 /* conv_cnote_old_pr_flags() */
465c6c9aed4Sab196087 #define	CONV_CNOTE_OLD_PR_FLAGS_BUFSIZE	164
466c6c9aed4Sab196087 typedef union {
467c6c9aed4Sab196087 	Conv32_inv_buf_t	inv_buf;
468c6c9aed4Sab196087 	char			buf[CONV_CNOTE_OLD_PR_FLAGS_BUFSIZE];
469c6c9aed4Sab196087 } Conv32_cnote_old_pr_flags_buf_t;
470c6c9aed4Sab196087 typedef union {
471c6c9aed4Sab196087 	Conv64_inv_buf_t	inv_buf;
472c6c9aed4Sab196087 	char			buf[CONV_CNOTE_OLD_PR_FLAGS_BUFSIZE];
473c6c9aed4Sab196087 } Conv64_cnote_old_pr_flags_buf_t;
474c6c9aed4Sab196087 
475c6c9aed4Sab196087 
476c6c9aed4Sab196087 /* conv_cnote_proc_flag() */
477c6c9aed4Sab196087 #define	CONV_CNOTE_PROC_FLAG_BUFSIZE	29
478c6c9aed4Sab196087 typedef union {
479c6c9aed4Sab196087 	Conv32_inv_buf_t	inv_buf;
480c6c9aed4Sab196087 	char			buf[CONV_CNOTE_PROC_FLAG_BUFSIZE];
481c6c9aed4Sab196087 } Conv32_cnote_proc_flag_buf_t;
482c6c9aed4Sab196087 typedef union {
483c6c9aed4Sab196087 	Conv64_inv_buf_t	inv_buf;
484c6c9aed4Sab196087 	char			buf[CONV_CNOTE_PROC_FLAG_BUFSIZE];
485c6c9aed4Sab196087 } Conv64_cnote_proc_flag_buf_t;
486c6c9aed4Sab196087 
487c6c9aed4Sab196087 
488c6c9aed4Sab196087 /* conv_cnote_sigset() */
489c6c9aed4Sab196087 #define	CONV_CNOTE_SIGSET_BUFSIZE	629
490c6c9aed4Sab196087 typedef union {
491c6c9aed4Sab196087 	Conv32_inv_buf_t	inv_buf;
492c6c9aed4Sab196087 	char			buf[CONV_CNOTE_SIGSET_BUFSIZE];
493c6c9aed4Sab196087 } Conv32_cnote_sigset_buf_t;
494c6c9aed4Sab196087 typedef union {
495c6c9aed4Sab196087 	Conv64_inv_buf_t	inv_buf;
496c6c9aed4Sab196087 	char			buf[CONV_CNOTE_SIGSET_BUFSIZE];
497c6c9aed4Sab196087 } Conv64_cnote_sigset_buf_t;
498c6c9aed4Sab196087 
499c6c9aed4Sab196087 
500c6c9aed4Sab196087 /* conv_cnote_fltset() */
501c6c9aed4Sab196087 #define	CONV_CNOTE_FLTSET_BUFSIZE	501
502c6c9aed4Sab196087 typedef union {
503c6c9aed4Sab196087 	Conv32_inv_buf_t	inv_buf;
504c6c9aed4Sab196087 	char			buf[CONV_CNOTE_FLTSET_BUFSIZE];
505c6c9aed4Sab196087 } Conv32_cnote_fltset_buf_t;
506c6c9aed4Sab196087 typedef union {
507c6c9aed4Sab196087 	Conv64_inv_buf_t	inv_buf;
508c6c9aed4Sab196087 	char			buf[CONV_CNOTE_FLTSET_BUFSIZE];
509c6c9aed4Sab196087 } Conv64_cnote_fltset_buf_t;
510c6c9aed4Sab196087 
511c6c9aed4Sab196087 
512c6c9aed4Sab196087 /* conv_cnote_sysset() */
513c6c9aed4Sab196087 #define	CONV_CNOTE_SYSSET_BUFSIZE	3212
514c6c9aed4Sab196087 typedef union {
515c6c9aed4Sab196087 	Conv32_inv_buf_t	inv_buf;
516c6c9aed4Sab196087 	char			buf[CONV_CNOTE_SYSSET_BUFSIZE];
517c6c9aed4Sab196087 } Conv32_cnote_sysset_buf_t;
518c6c9aed4Sab196087 typedef union {
519c6c9aed4Sab196087 	Conv64_inv_buf_t	inv_buf;
520c6c9aed4Sab196087 	char			buf[CONV_CNOTE_SYSSET_BUFSIZE];
521c6c9aed4Sab196087 } Conv64_cnote_sysset_buf_t;
522c6c9aed4Sab196087 
523c6c9aed4Sab196087 
524c6c9aed4Sab196087 /* conv_cnote_sa_flags() */
525c6c9aed4Sab196087 #define	CONV_CNOTE_SA_FLAGS_BUFSIZE	99
526c6c9aed4Sab196087 typedef union {
527c6c9aed4Sab196087 	Conv32_inv_buf_t	inv_buf;
528c6c9aed4Sab196087 	char			buf[CONV_CNOTE_SA_FLAGS_BUFSIZE];
529c6c9aed4Sab196087 } Conv32_cnote_sa_flags_buf_t;
530c6c9aed4Sab196087 typedef union {
531c6c9aed4Sab196087 	Conv64_inv_buf_t	inv_buf;
532c6c9aed4Sab196087 	char			buf[CONV_CNOTE_SA_FLAGS_BUFSIZE];
533c6c9aed4Sab196087 } Conv64_cnote_sa_flags_buf_t;
534c6c9aed4Sab196087 
535c6c9aed4Sab196087 
536c6c9aed4Sab196087 /* conv_cnote_ss_flags() */
537c6c9aed4Sab196087 #define	CONV_CNOTE_SS_FLAGS_BUFSIZE	38
538c6c9aed4Sab196087 typedef union {
539c6c9aed4Sab196087 	Conv32_inv_buf_t	inv_buf;
540c6c9aed4Sab196087 	char			buf[CONV_CNOTE_SS_FLAGS_BUFSIZE];
541c6c9aed4Sab196087 } Conv32_cnote_ss_flags_buf_t;
542c6c9aed4Sab196087 typedef union {
543c6c9aed4Sab196087 	Conv64_inv_buf_t	inv_buf;
544c6c9aed4Sab196087 	char			buf[CONV_CNOTE_SS_FLAGS_BUFSIZE];
545c6c9aed4Sab196087 } Conv64_cnote_ss_flags_buf_t;
546c6c9aed4Sab196087 
547c6c9aed4Sab196087 
548c6c9aed4Sab196087 /* conv_cnote_cc_content() */
549c6c9aed4Sab196087 #define	CONV_CNOTE_CC_CONTENT_BUFSIZE	87
550c6c9aed4Sab196087 typedef union {
551c6c9aed4Sab196087 	Conv32_inv_buf_t	inv_buf;
552c6c9aed4Sab196087 	char			buf[CONV_CNOTE_CC_CONTENT_BUFSIZE];
553c6c9aed4Sab196087 } Conv32_cnote_cc_content_buf_t;
554c6c9aed4Sab196087 typedef union {
555c6c9aed4Sab196087 	Conv64_inv_buf_t	inv_buf;
556c6c9aed4Sab196087 	char			buf[CONV_CNOTE_CC_CONTENT_BUFSIZE];
557c6c9aed4Sab196087 } Conv64_cnote_cc_content_buf_t;
558c6c9aed4Sab196087 
559c6c9aed4Sab196087 
560c6c9aed4Sab196087 /* conv_cnote_auxv_af() */
561c6c9aed4Sab196087 #define	CONV_CNOTE_AUXV_AF_BUFSIZE	63
562c6c9aed4Sab196087 typedef union {
563c6c9aed4Sab196087 	Conv32_inv_buf_t	inv_buf;
564c6c9aed4Sab196087 	char			buf[CONV_CNOTE_AUXV_AF_BUFSIZE];
565c6c9aed4Sab196087 } Conv32_cnote_auxv_af_buf_t;
566c6c9aed4Sab196087 typedef union {
567c6c9aed4Sab196087 	Conv64_inv_buf_t	inv_buf;
568c6c9aed4Sab196087 	char			buf[CONV_CNOTE_AUXV_AF_BUFSIZE];
569c6c9aed4Sab196087 } Conv64_cnote_auxv_af_buf_t;
570c6c9aed4Sab196087 
571c6c9aed4Sab196087 
572090a8d9eSAli Bahrami /* conv_ver_flags() */
573090a8d9eSAli Bahrami #define	CONV_VER_FLAGS_BUFSIZE	31
574090a8d9eSAli Bahrami typedef union {
575090a8d9eSAli Bahrami 	Conv32_inv_buf_t	inv_buf;
576090a8d9eSAli Bahrami 	char			buf[CONV_VER_FLAGS_BUFSIZE];
577090a8d9eSAli Bahrami } Conv32_ver_flags_buf_t;
578090a8d9eSAli Bahrami typedef union {
579090a8d9eSAli Bahrami 	Conv64_inv_buf_t	inv_buf;
580090a8d9eSAli Bahrami 	char			buf[CONV_VER_FLAGS_BUFSIZE];
581090a8d9eSAli Bahrami } Conv64_ver_flags_buf_t;
582090a8d9eSAli Bahrami 
583090a8d9eSAli Bahrami 
584de777a60Sab196087 
585de777a60Sab196087 /*
586de777a60Sab196087  * Generic names for class specific buffer types above
587de777a60Sab196087  */
588de777a60Sab196087 #if	defined(_ELF64)
589de777a60Sab196087 #define	CONV_INV_BUFSIZE		CONV64_INV_BUFSIZE
590de777a60Sab196087 #define	CONV_EHDR_FLAGS_BUFSIZE		CONV64_EHDR_FLAGS_BUFSIZE
591de777a60Sab196087 #define	CONV_DYN_POSFLAG1_BUFSIZE	CONV64_DYN_POSFLAG1_BUFSIZE
592de777a60Sab196087 #define	CONV_DYN_FLAG_BUFSIZE		CONV64_DYN_FLAG_BUFSIZE
593de777a60Sab196087 #define	CONV_DYN_FLAG1_BUFSIZE		CONV64_DYN_FLAG1_BUFSIZE
594de777a60Sab196087 #define	CONV_DYN_FEATURE1_BUFSIZE	CONV64_DYN_FEATURE1_BUFSIZE
595de777a60Sab196087 #define	CONV_BND_TYPE_BUFSIZE		CONV64_BND_TYPE_BUFSIZE
596de777a60Sab196087 #define	CONV_BND_OBJ_BUFSIZE		CONV64_BND_OBJ_BUFSIZE
597de777a60Sab196087 #define	CONV_PHDR_FLAGS_BUFSIZE		CONV64_PHDR_FLAGS_BUFSIZE
598de777a60Sab196087 #define	CONV_SEC_FLAGS_BUFSIZE		CONV64_SEC_FLAGS_BUFSIZE
599d29b2c44Sab196087 #define	CONV_SYMINFO_FLAGS_BUFSIZE	CONV64_SYMINFO_FLAGS_BUFSIZE
600de777a60Sab196087 
601de777a60Sab196087 #define	Conv_inv_buf_t			Conv64_inv_buf_t
602de777a60Sab196087 #define	Conv_ehdr_flags_buf_t		Conv64_ehdr_flags_buf_t
603de777a60Sab196087 #define	Conv_reject_desc_buf_t		Conv64_reject_desc_buf_t
604de777a60Sab196087 #define	Conv_cap_val_hw1_buf_t		Conv64_cap_val_hw1_buf_t
605de777a60Sab196087 #define	Conv_cap_val_sf1_buf_t		Conv64_cap_val_sf1_buf_t
606de777a60Sab196087 #define	Conv_cap_val_buf_t		Conv64_cap_val_buf_t
607de777a60Sab196087 #define	Conv_config_feat_buf_t		Conv64_config_feat_buf_t
608de777a60Sab196087 #define	Conv_config_obj_buf_t		Conv64_config_obj_buf_t
609de777a60Sab196087 #define	Conv_dl_mode_buf_t		Conv64_dl_mode_buf_t
610de777a60Sab196087 #define	Conv_dl_flag_buf_t		Conv64_dl_flag_buf_t
611de777a60Sab196087 #define	Conv_grphdl_flags_buf_t		Conv64_grphdl_flags_buf_t
612de777a60Sab196087 #define	Conv_grpdesc_flags_buf_t	Conv64_grpdesc_flags_buf_t
613de777a60Sab196087 #define	Conv_seg_flags_buf_t		Conv64_seg_flags_buf_t
614de777a60Sab196087 #define	Conv_dyn_posflag1_buf_t		Conv64_dyn_posflag1_buf_t
615de777a60Sab196087 #define	Conv_dyn_flag_buf_t		Conv64_dyn_flag_buf_t
616de777a60Sab196087 #define	Conv_dyn_flag1_buf_t		Conv64_dyn_flag1_buf_t
617de777a60Sab196087 #define	Conv_dyn_feature1_buf_t		Conv64_dyn_feature1_buf_t
618de777a60Sab196087 #define	Conv_bnd_type_buf_t		Conv64_bnd_type_buf_t
619de777a60Sab196087 #define	Conv_bnd_obj_buf_t		Conv64_bnd_obj_buf_t
620de777a60Sab196087 #define	Conv_phdr_flags_buf_t		Conv64_phdr_flags_buf_t
621de777a60Sab196087 #define	Conv_sec_flags_buf_t		Conv64_sec_flags_buf_t
622de777a60Sab196087 #define	Conv_dwarf_ehe_buf_t		Conv64_dwarf_ehe_buf_t
623d29b2c44Sab196087 #define	Conv_syminfo_flags_buf_t	Conv64_syminfo_flags_buf_t
624c6c9aed4Sab196087 #define	Conv_cnote_pr_flags_buf_t	Conv64_cnote_pr_flags_buf_t
625c6c9aed4Sab196087 #define	Conv_cnote_old_pr_flags_buf_t	Conv64_cnote_old_pr_flags_buf_t
626c6c9aed4Sab196087 #define	Conv_cnote_proc_flag_buf_t	Conv64_cnote_proc_flag_buf_t
627c6c9aed4Sab196087 #define	Conv_cnote_sigset_buf_t		Conv64_cnote_sigset_buf_t
628c6c9aed4Sab196087 #define	Conv_cnote_fltset_buf_t		Conv64_cnote_fltset_buf_t
629c6c9aed4Sab196087 #define	Conv_cnote_sysset_buf_t		Conv64_cnote_sysset_buf_t
630c6c9aed4Sab196087 #define	Conv_cnote_sa_flags_buf_t	Conv64_cnote_sa_flags_buf_t
631c6c9aed4Sab196087 #define	Conv_cnote_ss_flags_buf_t	Conv64_cnote_ss_flags_buf_t
632c6c9aed4Sab196087 #define	Conv_cnote_cc_content_buf_t	Conv64_cnote_cc_content_buf_t
633c6c9aed4Sab196087 #define	Conv_cnote_auxv_af_buf_t	Conv64_cnote_auxv_af_buf_t
634090a8d9eSAli Bahrami #define	Conv_ver_flags_buf_t		Conv64_ver_flags_buf_t
635de777a60Sab196087 #else
636de777a60Sab196087 #define	CONV_INV_BUFSIZE		CONV32_INV_BUFSIZE
637de777a60Sab196087 #define	CONV_EHDR_FLAGS_BUFSIZE		CONV32_EHDR_FLAGS_BUFSIZE
638de777a60Sab196087 #define	CONV_DYN_POSFLAG1_BUFSIZE	CONV32_DYN_POSFLAG1_BUFSIZE
639de777a60Sab196087 #define	CONV_DYN_FLAG_BUFSIZE		CONV32_DYN_FLAG_BUFSIZE
640de777a60Sab196087 #define	CONV_DYN_FLAG1_BUFSIZE		CONV32_DYN_FLAG1_BUFSIZE
641de777a60Sab196087 #define	CONV_DYN_FEATURE1_BUFSIZE	CONV32_DYN_FEATURE1_BUFSIZE
642de777a60Sab196087 #define	CONV_BND_TYPE_BUFSIZE		CONV32_BND_TYPE_BUFSIZE
643de777a60Sab196087 #define	CONV_BND_OBJ_BUFSIZE		CONV32_BND_OBJ_BUFSIZE
644de777a60Sab196087 #define	CONV_PHDR_FLAGS_BUFSIZE		CONV32_PHDR_FLAGS_BUFSIZE
645de777a60Sab196087 #define	CONV_SEC_FLAGS_BUFSIZE		CONV32_SEC_FLAGS_BUFSIZE
646d29b2c44Sab196087 #define	CONV_SYMINFO_FLAGS_BUFSIZE	CONV32_SYMINFO_FLAGS_BUFSIZE
647de777a60Sab196087 
648de777a60Sab196087 #define	Conv_inv_buf_t			Conv32_inv_buf_t
649de777a60Sab196087 #define	Conv_ehdr_flags_buf_t		Conv32_ehdr_flags_buf_t
650de777a60Sab196087 #define	Conv_reject_desc_buf_t		Conv32_reject_desc_buf_t
651de777a60Sab196087 #define	Conv_cap_val_hw1_buf_t		Conv32_cap_val_hw1_buf_t
652de777a60Sab196087 #define	Conv_cap_val_sf1_buf_t		Conv32_cap_val_sf1_buf_t
653de777a60Sab196087 #define	Conv_cap_val_buf_t		Conv32_cap_val_buf_t
654de777a60Sab196087 #define	Conv_config_feat_buf_t		Conv32_config_feat_buf_t
655de777a60Sab196087 #define	Conv_config_obj_buf_t		Conv32_config_obj_buf_t
656de777a60Sab196087 #define	Conv_dl_mode_buf_t		Conv32_dl_mode_buf_t
657de777a60Sab196087 #define	Conv_dl_flag_buf_t		Conv32_dl_flag_buf_t
658de777a60Sab196087 #define	Conv_grphdl_flags_buf_t		Conv32_grphdl_flags_buf_t
659de777a60Sab196087 #define	Conv_grpdesc_flags_buf_t	Conv32_grpdesc_flags_buf_t
660de777a60Sab196087 #define	Conv_seg_flags_buf_t		Conv32_seg_flags_buf_t
661de777a60Sab196087 #define	Conv_dyn_posflag1_buf_t		Conv32_dyn_posflag1_buf_t
662de777a60Sab196087 #define	Conv_dyn_flag_buf_t		Conv32_dyn_flag_buf_t
663de777a60Sab196087 #define	Conv_dyn_flag1_buf_t		Conv32_dyn_flag1_buf_t
664de777a60Sab196087 #define	Conv_dyn_feature1_buf_t		Conv32_dyn_feature1_buf_t
665de777a60Sab196087 #define	Conv_bnd_type_buf_t		Conv32_bnd_type_buf_t
666de777a60Sab196087 #define	Conv_bnd_obj_buf_t		Conv32_bnd_obj_buf_t
667de777a60Sab196087 #define	Conv_phdr_flags_buf_t		Conv32_phdr_flags_buf_t
668de777a60Sab196087 #define	Conv_sec_flags_buf_t		Conv32_sec_flags_buf_t
669de777a60Sab196087 #define	Conv_dwarf_ehe_buf_t		Conv32_dwarf_ehe_buf_t
670d29b2c44Sab196087 #define	Conv_syminfo_flags_buf_t	Conv32_syminfo_flags_buf_t
671c6c9aed4Sab196087 #define	Conv_cnote_pr_flags_buf_t	Conv32_cnote_pr_flags_buf_t
672c6c9aed4Sab196087 #define	Conv_cnote_old_pr_flags_buf_t	Conv32_cnote_old_pr_flags_buf_t
673c6c9aed4Sab196087 #define	Conv_cnote_proc_flag_buf_t	Conv32_cnote_proc_flag_buf_t
674c6c9aed4Sab196087 #define	Conv_cnote_sigset_buf_t		Conv32_cnote_sigset_buf_t
675c6c9aed4Sab196087 #define	Conv_cnote_fltset_buf_t		Conv32_cnote_fltset_buf_t
676c6c9aed4Sab196087 #define	Conv_cnote_sysset_buf_t		Conv32_cnote_sysset_buf_t
677c6c9aed4Sab196087 #define	Conv_cnote_sa_flags_buf_t	Conv32_cnote_sa_flags_buf_t
678c6c9aed4Sab196087 #define	Conv_cnote_ss_flags_buf_t	Conv32_cnote_ss_flags_buf_t
679c6c9aed4Sab196087 #define	Conv_cnote_cc_content_buf_t	Conv32_cnote_cc_content_buf_t
680c6c9aed4Sab196087 #define	Conv_cnote_auxv_af_buf_t	Conv32_cnote_auxv_af_buf_t
681090a8d9eSAli Bahrami #define	Conv_ver_flags_buf_t		Conv32_ver_flags_buf_t
682de777a60Sab196087 #endif
683de777a60Sab196087 
684de777a60Sab196087 
685de777a60Sab196087 
6862926dd2eSrie 
6872926dd2eSrie /*
688d29b2c44Sab196087  * Many conversion routines accept a fmt_flags argument of this type
689d29b2c44Sab196087  * to allow the caller to modify the output. There are two parts to
690d29b2c44Sab196087  * this value:
691d29b2c44Sab196087  *
692d29b2c44Sab196087  *	(1) Format requests (decimal vs hex, etc...)
693d29b2c44Sab196087  *	(2) The low order bits specified by CONV_MASK_FMT_ALT
694d29b2c44Sab196087  *		and retrieved by CONV_TYPE_FMT_ALT are integer
695d29b2c44Sab196087  *		values that specify that an alternate set of
696d29b2c44Sab196087  *		strings should be used. This is necessary because
697d29b2c44Sab196087  *		different utilities evolved to use different strings,
698d29b2c44Sab196087  *		and there are backward compatability guarantees in
699d29b2c44Sab196087  *		place that prevent changing them.
700d29b2c44Sab196087  *
701d29b2c44Sab196087  * These values are designed such that a caller can always supply a
702d29b2c44Sab196087  * simple 0 in order to receive "default" behavior.
7035aefb655Srie  */
704d29b2c44Sab196087 typedef int Conv_fmt_flags_t;
705c13de8f6Sab196087 
706c13de8f6Sab196087 /*
707d29b2c44Sab196087  * The bottom 8 bits of Conv_fmt_flags_t are used to encode
708d29b2c44Sab196087  * alternative strings.
709d29b2c44Sab196087  *
710d29b2c44Sab196087  * If a given conversion routine does not support alternative strings
711d29b2c44Sab196087  * for a given CONV_FMT_ALT type, it silently ignores the request and
712d29b2c44Sab196087  * supplies the default set. This means that a utility like dump(1) is
713d29b2c44Sab196087  * free to specify its special type in every conversion routine call,
714d29b2c44Sab196087  * without regard to whether it has any special meaning for that particular
715d29b2c44Sab196087  * routine. It will receive its special strings if there are any, and
716d29b2c44Sab196087  * the defaults otherwise.
717c13de8f6Sab196087  */
718d29b2c44Sab196087 #define	CONV_MASK_FMT_ALT		0xff
719d29b2c44Sab196087 #define	CONV_TYPE_FMT_ALT(fmt_flags)	(fmt_flags & CONV_MASK_FMT_ALT)
720d29b2c44Sab196087 
721d29b2c44Sab196087 #define	CONV_FMT_ALT_DEFAULT	0	/* "Standard" strings */
722d29b2c44Sab196087 #define	CONV_FMT_ALT_DUMP	1	/* Style of strings used by dump(1) */
723d29b2c44Sab196087 #define	CONV_FMT_ALT_FILE	2	/* Style of strings used by file(1) */
724d29b2c44Sab196087 #define	CONV_FMT_ALT_CRLE	3	/* Style of strings used by crle(1) */
725d29b2c44Sab196087 #define	CONV_FMT_ALT_FULLNAME	4	/* Strings should be full #define */
726d29b2c44Sab196087 					/* 	(e.g. STB_LOCAL, not LOCL) */
727d29b2c44Sab196087 
728d29b2c44Sab196087 /*
729d29b2c44Sab196087  * Flags that alter standard formatting for conversion routines.
730d29b2c44Sab196087  * These bits start after the range occupied by CONV_MASK_FMT_ALT.
731d29b2c44Sab196087  */
732d29b2c44Sab196087 #define	CONV_FMT_DECIMAL	0x0100	/* conv_invalid_val() should print */
733d29b2c44Sab196087 					/*    integer print as decimal */
734d29b2c44Sab196087 					/*    (default is hex) */
735d29b2c44Sab196087 #define	CONV_FMT_SPACE		0x0200	/* conv_invalid_val() should append */
736d29b2c44Sab196087 					/*    a space after the number.  */
737d29b2c44Sab196087 #define	CONV_FMT_NOBKT		0x0400	/* conv_expn_field() should omit */
738d29b2c44Sab196087 					/*    prefix and suffix strings */
739d29b2c44Sab196087 
7405aefb655Srie 
7415aefb655Srie /*
7425aefb655Srie  * The expansion of bit-field data items is driven from a value descriptor and
7435aefb655Srie  * the conv_expn_field() routine.
7445aefb655Srie  */
7455aefb655Srie typedef struct {
7465aefb655Srie 	Xword		v_val;		/* expansion value */
7475aefb655Srie 	const char	*v_msg;		/* associated message string */
7485aefb655Srie } Val_desc;
7495aefb655Srie 
7505aefb655Srie /*
751ba4e3c84Sab196087  * conv_expn_field() is willing to supply default strings for the
752ba4e3c84Sab196087  * prefix, separator, and suffix arguments, if they are passed as NULL.
753ba4e3c84Sab196087  * The caller needs to know how much room to allow for these items.
754ba4e3c84Sab196087  * These values supply those sizes.
755ba4e3c84Sab196087  */
756ba4e3c84Sab196087 #define	CONV_EXPN_FIELD_DEF_PREFIX_SIZE	2	/* Default is "[ " */
757ba4e3c84Sab196087 #define	CONV_EXPN_FIELD_DEF_SEP_SIZE	1	/* Default is " " */
758ba4e3c84Sab196087 #define	CONV_EXPN_FIELD_DEF_SUFFIX_SIZE	2	/* Default is " ]" */
759ba4e3c84Sab196087 
760ba4e3c84Sab196087 /*
761ba4e3c84Sab196087  * conv_expn_field() requires a large number of inputs, many of which
762ba4e3c84Sab196087  * can be NULL to accept default behavior. An argument of the following
763ba4e3c84Sab196087  * type is used to supply them.
764ba4e3c84Sab196087  */
765ba4e3c84Sab196087 typedef struct {
766ba4e3c84Sab196087 	char *buf;		/* Buffer to receive generated string */
767ba4e3c84Sab196087 	size_t bufsize;		/* sizeof(buf) */
768ba4e3c84Sab196087 	const Val_desc *vdp;	/* Array of value descriptors, giving the */
769ba4e3c84Sab196087 				/*	possible bit values, and their */
770ba4e3c84Sab196087 				/*	corresponding strings. Note that the */
771ba4e3c84Sab196087 				/*	final element must contain only NULL */
772ba4e3c84Sab196087 				/*	values. This terminates the list. */
773ba4e3c84Sab196087 	const char **lead_str;	/* NULL, or array of pointers to strings to */
774ba4e3c84Sab196087 				/*	be output at the head of the list. */
775ba4e3c84Sab196087 				/*	Last entry must be NULL. */
776ba4e3c84Sab196087 	Xword oflags;		/* Bits for which output strings are desired */
777ba4e3c84Sab196087 	Xword rflags;		/* Bits for which a numeric value should be */
778ba4e3c84Sab196087 				/*	output if vdp does not provide str. */
779ba4e3c84Sab196087 				/*	Must be a proper subset of oflags */
780ba4e3c84Sab196087 	const char *prefix;	/* NULL, or string to prefix output with */
781ba4e3c84Sab196087 				/*	If NULL, "[ " is used. */
782ba4e3c84Sab196087 	const char *sep;	/* NULL, or string to separate output items */
783ba4e3c84Sab196087 				/*	with. If NULL, " " is used. */
784ba4e3c84Sab196087 	const char *suffix;	/* NULL, or string to suffix output with */
785ba4e3c84Sab196087 				/*	If NULL, " ]" is used. */
786ba4e3c84Sab196087 } CONV_EXPN_FIELD_ARG;
787ba4e3c84Sab196087 
788c6c9aed4Sab196087 
789c6c9aed4Sab196087 /*
790c6c9aed4Sab196087  * Callback function for conv_str_to_c_literal(). A user supplied function
791c6c9aed4Sab196087  * of this type is called by conv_str_to_c_literal() in order to dispatch
792c6c9aed4Sab196087  * the translated output characters.
793c6c9aed4Sab196087  *
794c6c9aed4Sab196087  *	buf - Pointer to output text
795c6c9aed4Sab196087  *	n - # of characters to output
796c6c9aed4Sab196087  *	uvalue - User value argument to conv_str_to_c_literal(),
797c6c9aed4Sab196087  *		passed through without interpretation.
798c6c9aed4Sab196087  */
799c6c9aed4Sab196087 typedef	void		Conv_str_to_c_literal_func_t(const void *ptr,
800c6c9aed4Sab196087 			    size_t size, void *uvalue);
801c6c9aed4Sab196087 
802ba4e3c84Sab196087 /*
8035aefb655Srie  * Define all generic interfaces.
8047c478bd9Sstevel@tonic-gate  */
8057010c12aSrie extern	uchar_t		conv_check_native(char **, char **);
806de777a60Sab196087 extern	const char	*conv_config_feat(int, Conv_config_feat_buf_t *);
807de777a60Sab196087 extern	const char	*conv_config_obj(ushort_t, Conv_config_obj_buf_t *);
8085aefb655Srie extern	const char	*conv_config_upm(const char *, const char *,
8095aefb655Srie 			    const char *, size_t);
810c6c9aed4Sab196087 extern	const char	*conv_cnote_auxv_af(Word, Conv_fmt_flags_t,
811c6c9aed4Sab196087 			    Conv_cnote_auxv_af_buf_t *);
812c6c9aed4Sab196087 extern	const char	*conv_cnote_auxv_type(Word, Conv_fmt_flags_t,
813c6c9aed4Sab196087 			    Conv_inv_buf_t *);
814c6c9aed4Sab196087 extern	const char	*conv_cnote_cc_content(Lword, Conv_fmt_flags_t,
815c6c9aed4Sab196087 			    Conv_cnote_cc_content_buf_t *);
816c6c9aed4Sab196087 extern	const char	*conv_cnote_errno(int, Conv_fmt_flags_t,
817c6c9aed4Sab196087 			    Conv_inv_buf_t *);
818c6c9aed4Sab196087 extern	const char	*conv_cnote_fault(Word, Conv_fmt_flags_t,
819c6c9aed4Sab196087 			    Conv_inv_buf_t *);
820c6c9aed4Sab196087 extern	const char	*conv_cnote_fltset(uint32_t *, int,
821c6c9aed4Sab196087 			    Conv_fmt_flags_t, Conv_cnote_fltset_buf_t *);
822c6c9aed4Sab196087 extern	const char	*conv_cnote_old_pr_flags(int, Conv_fmt_flags_t,
823c6c9aed4Sab196087 			    Conv_cnote_old_pr_flags_buf_t *);
824c6c9aed4Sab196087 extern	const char	*conv_cnote_pr_dmodel(Word, Conv_fmt_flags_t,
825c6c9aed4Sab196087 			    Conv_inv_buf_t *);
826c6c9aed4Sab196087 extern	const char	*conv_cnote_pr_flags(int, Conv_fmt_flags_t,
827c6c9aed4Sab196087 			    Conv_cnote_pr_flags_buf_t *);
828c6c9aed4Sab196087 extern	const char	*conv_cnote_proc_flag(int, Conv_fmt_flags_t,
829c6c9aed4Sab196087 			    Conv_cnote_proc_flag_buf_t *);
830c6c9aed4Sab196087 extern	const char	*conv_cnote_pr_regname(Half, int, Conv_fmt_flags_t,
831c6c9aed4Sab196087 			    Conv_inv_buf_t *inv_buf);
832c6c9aed4Sab196087 extern	const char	*conv_cnote_pr_stype(Word, Conv_fmt_flags_t,
833c6c9aed4Sab196087 			    Conv_inv_buf_t *);
834c6c9aed4Sab196087 extern	const char	*conv_cnote_pr_what(short, short, Conv_fmt_flags_t,
835c6c9aed4Sab196087 			    Conv_inv_buf_t *);
836c6c9aed4Sab196087 extern	const char	*conv_cnote_pr_why(short, Conv_fmt_flags_t,
837c6c9aed4Sab196087 			    Conv_inv_buf_t *);
838c6c9aed4Sab196087 extern	const char	*conv_cnote_priv(int, Conv_fmt_flags_t,
839c6c9aed4Sab196087 			    Conv_inv_buf_t *);
840c6c9aed4Sab196087 extern	const char	*conv_cnote_psetid(int, Conv_fmt_flags_t,
841c6c9aed4Sab196087 			    Conv_inv_buf_t *);
842c6c9aed4Sab196087 extern	const char	*conv_cnote_sa_flags(int, Conv_fmt_flags_t,
843c6c9aed4Sab196087 			    Conv_cnote_sa_flags_buf_t *);
844c6c9aed4Sab196087 extern	const char	*conv_cnote_signal(Word, Conv_fmt_flags_t,
845c6c9aed4Sab196087 			    Conv_inv_buf_t *);
846c6c9aed4Sab196087 extern	const char	*conv_cnote_si_code(Half, int, int, Conv_fmt_flags_t,
847c6c9aed4Sab196087 			    Conv_inv_buf_t *);
848c6c9aed4Sab196087 extern	const char	*conv_cnote_sigset(uint32_t *, int,
849c6c9aed4Sab196087 			    Conv_fmt_flags_t, Conv_cnote_sigset_buf_t *);
850c6c9aed4Sab196087 extern	const char	*conv_cnote_ss_flags(int, Conv_fmt_flags_t,
851c6c9aed4Sab196087 			    Conv_cnote_ss_flags_buf_t *);
852c6c9aed4Sab196087 extern	const char	*conv_cnote_syscall(Word, Conv_fmt_flags_t,
853c6c9aed4Sab196087 			    Conv_inv_buf_t *);
854c6c9aed4Sab196087 extern	const char	*conv_cnote_sysset(uint32_t *, int,
855c6c9aed4Sab196087 			    Conv_fmt_flags_t, Conv_cnote_sysset_buf_t *);
856c6c9aed4Sab196087 extern	const char	*conv_cnote_type(Word, Conv_fmt_flags_t,
857c6c9aed4Sab196087 			    Conv_inv_buf_t *);
858de777a60Sab196087 extern	const char	*conv_def_tag(Symref, Conv_inv_buf_t *);
8595aefb655Srie extern	const char	*conv_demangle_name(const char *);
860d29b2c44Sab196087 extern	const char	*conv_dl_flag(int, Conv_fmt_flags_t,
861d29b2c44Sab196087 			    Conv_dl_flag_buf_t *);
862de777a60Sab196087 extern	const char	*conv_dl_mode(int, int, Conv_dl_mode_buf_t *);
863*7e16fca0SAli Bahrami extern	const char	*conv_dwarf_cfa(uchar_t, Conv_fmt_flags_t,
864*7e16fca0SAli Bahrami 			    Conv_inv_buf_t *);
865de777a60Sab196087 extern	const char	*conv_dwarf_ehe(uint_t, Conv_dwarf_ehe_buf_t *);
866*7e16fca0SAli Bahrami extern	const char	*conv_dwarf_regname(Half, Word, Conv_fmt_flags_t,
867*7e16fca0SAli Bahrami 			    int *, Conv_inv_buf_t *);
868de777a60Sab196087 extern	const char	*conv_elfdata_type(Elf_Type, Conv_inv_buf_t *);
869de777a60Sab196087 extern	const char	*conv_grphdl_flags(uint_t, Conv_grphdl_flags_buf_t *);
870de777a60Sab196087 extern	const char	*conv_grpdesc_flags(uint_t, Conv_grpdesc_flags_buf_t *);
8717c478bd9Sstevel@tonic-gate extern	Isa_desc	*conv_isalist(void);
8727c478bd9Sstevel@tonic-gate extern	const char	*conv_lddstub(int);
873de777a60Sab196087 extern	const char	*conv_seg_flags(Half, Conv_seg_flags_buf_t *);
8747c478bd9Sstevel@tonic-gate extern	int		conv_sys_eclass();
875c6c9aed4Sab196087 extern	void		conv_str_to_c_literal(const char *buf, size_t n,
876c6c9aed4Sab196087 			    Conv_str_to_c_literal_func_t *cb_func,
877c6c9aed4Sab196087 			    void *uvalue);
8787c478bd9Sstevel@tonic-gate extern	Uts_desc	*conv_uts(void);
879090a8d9eSAli Bahrami extern	const char	*conv_ver_flags(Half, Conv_fmt_flags_t,
880090a8d9eSAli Bahrami 			    Conv_ver_flags_buf_t *);
881de777a60Sab196087 extern	const char	*conv_ver_index(Versym, int, Conv_inv_buf_t *);
882de777a60Sab196087 
8835aefb655Srie 
8845aefb655Srie /*
8855aefb655Srie  * Define all class specific routines.
8865aefb655Srie  */
8875aefb655Srie #if	defined(_ELF64)
8885aefb655Srie #define	conv_bnd_obj		conv64_bnd_obj
8895aefb655Srie #define	conv_bnd_type		conv64_bnd_type
8905aefb655Srie #define	conv_cap_tag		conv64_cap_tag
8915aefb655Srie #define	conv_cap_val		conv64_cap_val
8925aefb655Srie #define	conv_cap_val_hw1	conv64_cap_val_hw1
8935aefb655Srie #define	conv_cap_val_sf1	conv64_cap_val_sf1
8945aefb655Srie #define	conv_dyn_feature1	conv64_dyn_feature1
8955aefb655Srie #define	conv_dyn_flag1		conv64_dyn_flag1
8965aefb655Srie #define	conv_dyn_flag		conv64_dyn_flag
8975aefb655Srie #define	conv_dyn_posflag1	conv64_dyn_posflag1
8985aefb655Srie #define	conv_dyn_tag		conv64_dyn_tag
8995aefb655Srie #define	conv_ehdr_class		conv64_ehdr_class
9005aefb655Srie #define	conv_ehdr_data		conv64_ehdr_data
9015aefb655Srie #define	conv_ehdr_flags		conv64_ehdr_flags
9025aefb655Srie #define	conv_ehdr_mach		conv64_ehdr_mach
9033244bcaaSab196087 #define	conv_ehdr_osabi		conv64_ehdr_osabi
9045aefb655Srie #define	conv_ehdr_type		conv64_ehdr_type
9055aefb655Srie #define	conv_ehdr_vers		conv64_ehdr_vers
9065aefb655Srie #define	conv_expn_field		conv64_expn_field
9075aefb655Srie #define	conv_invalid_val	conv64_invalid_val
9085aefb655Srie #define	conv_phdr_flags		conv64_phdr_flags
9095aefb655Srie #define	conv_phdr_type		conv64_phdr_type
9105aefb655Srie #define	conv_reject_desc	conv64_reject_desc
9115aefb655Srie #define	conv_reloc_type		conv64_reloc_type
912de777a60Sab196087 #define	conv_reloc_type_static	conv64_reloc_type_static
9135aefb655Srie #define	conv_reloc_386_type	conv64_reloc_386_type
9145aefb655Srie #define	conv_reloc_amd64_type	conv64_reloc_amd64_type
9155aefb655Srie #define	conv_reloc_SPARC_type	conv64_reloc_SPARC_type
9165aefb655Srie #define	conv_sec_flags		conv64_sec_flags
9177010c12aSrie #define	conv_sec_linkinfo	conv64_sec_linkinfo
9185aefb655Srie #define	conv_sec_type		conv64_sec_type
9195aefb655Srie #define	conv_sym_info_bind	conv64_sym_info_bind
9205aefb655Srie #define	conv_sym_info_type	conv64_sym_info_type
9215aefb655Srie #define	conv_sym_shndx		conv64_sym_shndx
9225aefb655Srie #define	conv_sym_other		conv64_sym_other
923d29b2c44Sab196087 #define	conv_sym_other_vis	conv64_sym_other_vis
9245aefb655Srie #define	conv_sym_value		conv64_sym_value
9255aefb655Srie #define	conv_sym_SPARC_value	conv64_sym_SPARC_value
926d29b2c44Sab196087 #define	conv_syminfo_flags	conv64_syminfo_flags
9275aefb655Srie #else
9285aefb655Srie #define	conv_bnd_obj		conv32_bnd_obj
9295aefb655Srie #define	conv_bnd_type		conv32_bnd_type
9305aefb655Srie #define	conv_cap_tag		conv32_cap_tag
9315aefb655Srie #define	conv_cap_val		conv32_cap_val
9325aefb655Srie #define	conv_cap_val_hw1	conv32_cap_val_hw1
9335aefb655Srie #define	conv_cap_val_sf1	conv32_cap_val_sf1
9345aefb655Srie #define	conv_dyn_feature1	conv32_dyn_feature1
9355aefb655Srie #define	conv_dyn_flag1		conv32_dyn_flag1
9365aefb655Srie #define	conv_dyn_flag		conv32_dyn_flag
9375aefb655Srie #define	conv_dyn_posflag1	conv32_dyn_posflag1
9385aefb655Srie #define	conv_dyn_tag		conv32_dyn_tag
9395aefb655Srie #define	conv_ehdr_class		conv32_ehdr_class
9405aefb655Srie #define	conv_ehdr_data		conv32_ehdr_data
9415aefb655Srie #define	conv_ehdr_flags		conv32_ehdr_flags
9425aefb655Srie #define	conv_ehdr_mach		conv32_ehdr_mach
9433244bcaaSab196087 #define	conv_ehdr_osabi		conv32_ehdr_osabi
9445aefb655Srie #define	conv_ehdr_type		conv32_ehdr_type
9455aefb655Srie #define	conv_ehdr_vers		conv32_ehdr_vers
9465aefb655Srie #define	conv_expn_field		conv32_expn_field
9475aefb655Srie #define	conv_invalid_val	conv32_invalid_val
9485aefb655Srie #define	conv_phdr_flags		conv32_phdr_flags
9495aefb655Srie #define	conv_phdr_type		conv32_phdr_type
9505aefb655Srie #define	conv_reject_desc	conv32_reject_desc
9515aefb655Srie #define	conv_reloc_type		conv32_reloc_type
952de777a60Sab196087 #define	conv_reloc_type_static	conv32_reloc_type_static
9535aefb655Srie #define	conv_reloc_386_type	conv32_reloc_386_type
9545aefb655Srie #define	conv_reloc_amd64_type	conv32_reloc_amd64_type
9555aefb655Srie #define	conv_reloc_SPARC_type	conv32_reloc_SPARC_type
9565aefb655Srie #define	conv_sec_flags		conv32_sec_flags
9577010c12aSrie #define	conv_sec_linkinfo	conv32_sec_linkinfo
9585aefb655Srie #define	conv_sec_type		conv32_sec_type
9595aefb655Srie #define	conv_sym_info_bind	conv32_sym_info_bind
9605aefb655Srie #define	conv_sym_info_type	conv32_sym_info_type
9615aefb655Srie #define	conv_sym_shndx		conv32_sym_shndx
9625aefb655Srie #define	conv_sym_other		conv32_sym_other
963d29b2c44Sab196087 #define	conv_sym_other_vis	conv32_sym_other_vis
9645aefb655Srie #define	conv_sym_value		conv32_sym_value
9655aefb655Srie #define	conv_sym_SPARC_value	conv32_sym_SPARC_value
966d29b2c44Sab196087 #define	conv_syminfo_flags	conv32_syminfo_flags
9675aefb655Srie #endif
9685aefb655Srie 
969de777a60Sab196087 extern	const char	*conv_bnd_obj(uint_t, Conv_bnd_obj_buf_t *);
970de777a60Sab196087 extern	const char	*conv_bnd_type(uint_t, Conv_bnd_type_buf_t *);
971de777a60Sab196087 extern	const char	*conv_cap_tag(Xword, Conv_inv_buf_t *);
972de777a60Sab196087 extern	const char	*conv_cap_val(Xword, Xword, Half, Conv_cap_val_buf_t *);
973d29b2c44Sab196087 extern	const char	*conv_cap_val_hw1(Xword, Half, Conv_fmt_flags_t,
974de777a60Sab196087 			    Conv_cap_val_hw1_buf_t *);
975d29b2c44Sab196087 extern	const char	*conv_cap_val_sf1(Xword, Half, Conv_fmt_flags_t,
976de777a60Sab196087 			    Conv_cap_val_sf1_buf_t *);
977d29b2c44Sab196087 extern	const char	*conv_dyn_flag1(Xword, Conv_fmt_flags_t,
978d29b2c44Sab196087 			    Conv_dyn_flag1_buf_t *);
979d29b2c44Sab196087 extern	const char	*conv_dyn_flag(Xword, Conv_fmt_flags_t,
980d29b2c44Sab196087 			    Conv_dyn_flag_buf_t *);
981d29b2c44Sab196087 extern	const char	*conv_dyn_posflag1(Xword, Conv_fmt_flags_t,
982de777a60Sab196087 			    Conv_dyn_posflag1_buf_t *);
983d29b2c44Sab196087 extern	const char	*conv_dyn_tag(Xword, Half, Conv_fmt_flags_t,
984d29b2c44Sab196087 			    Conv_inv_buf_t *);
985d29b2c44Sab196087 extern	const char	*conv_dyn_feature1(Xword, Conv_fmt_flags_t,
986de777a60Sab196087 			    Conv_dyn_feature1_buf_t *);
987d29b2c44Sab196087 extern	const char	*conv_ehdr_class(uchar_t, Conv_fmt_flags_t,
988d29b2c44Sab196087 			    Conv_inv_buf_t *);
989d29b2c44Sab196087 extern	const char	*conv_ehdr_data(uchar_t, Conv_fmt_flags_t,
990d29b2c44Sab196087 			    Conv_inv_buf_t *);
991d29b2c44Sab196087 extern	const char	*conv_ehdr_flags(Half, Word, Conv_fmt_flags_t,
992d29b2c44Sab196087 			    Conv_ehdr_flags_buf_t *);
993d29b2c44Sab196087 extern	const char	*conv_ehdr_mach(Half, Conv_fmt_flags_t,
994d29b2c44Sab196087 			    Conv_inv_buf_t *);
995d29b2c44Sab196087 extern	const char	*conv_ehdr_osabi(uchar_t, Conv_fmt_flags_t,
996d29b2c44Sab196087 			    Conv_inv_buf_t *);
997d29b2c44Sab196087 extern	const char	*conv_ehdr_type(Half, Conv_fmt_flags_t,
998d29b2c44Sab196087 			    Conv_inv_buf_t *);
999d29b2c44Sab196087 extern	const char	*conv_ehdr_vers(Word, Conv_fmt_flags_t,
1000d29b2c44Sab196087 			    Conv_inv_buf_t *);
1001d29b2c44Sab196087 extern	int		conv_expn_field(CONV_EXPN_FIELD_ARG *,
1002d29b2c44Sab196087 			    Conv_fmt_flags_t);
1003d29b2c44Sab196087 extern	const char	*conv_invalid_val(Conv_inv_buf_t *, Xword,
1004d29b2c44Sab196087 			    Conv_fmt_flags_t);
1005d29b2c44Sab196087 extern	const char	*conv_phdr_flags(Word, Conv_fmt_flags_t fmt_flags,
1006d29b2c44Sab196087 			    Conv_phdr_flags_buf_t *);
1007d29b2c44Sab196087 extern	const char	*conv_phdr_type(Half, Word, Conv_fmt_flags_t,
1008d29b2c44Sab196087 			    Conv_inv_buf_t *);
1009ba2be530Sab196087 extern	const char	*conv_reject_desc(Rej_desc *, Conv_reject_desc_buf_t *,
1010ba2be530Sab196087 			    Half mach);
1011d29b2c44Sab196087 extern	const char	*conv_reloc_type(Half, Word, Conv_fmt_flags_t,
1012d29b2c44Sab196087 			    Conv_inv_buf_t *);
1013d29b2c44Sab196087 extern	const char	*conv_reloc_type_static(Half, Word, Conv_fmt_flags_t);
1014d29b2c44Sab196087 extern	const char	*conv_reloc_386_type(Word, Conv_fmt_flags_t,
1015d29b2c44Sab196087 			    Conv_inv_buf_t *);
1016d29b2c44Sab196087 extern	const char	*conv_reloc_amd64_type(Word, Conv_fmt_flags_t,
1017d29b2c44Sab196087 			    Conv_inv_buf_t *);
1018d29b2c44Sab196087 extern	const char	*conv_reloc_SPARC_type(Word, Conv_fmt_flags_t,
1019d29b2c44Sab196087 			    Conv_inv_buf_t *);
1020d29b2c44Sab196087 extern	const char	*conv_sec_flags(Xword, Conv_fmt_flags_t,
1021d29b2c44Sab196087 			    Conv_sec_flags_buf_t *);
1022de777a60Sab196087 extern	const char	*conv_sec_linkinfo(Word, Xword, Conv_inv_buf_t *);
1023d29b2c44Sab196087 extern	const char	*conv_sec_type(Half, Word, Conv_fmt_flags_t,
1024d29b2c44Sab196087 			    Conv_inv_buf_t *);
1025d29b2c44Sab196087 extern	const char	*conv_sym_info_bind(uchar_t, Conv_fmt_flags_t,
1026d29b2c44Sab196087 			    Conv_inv_buf_t *);
1027d29b2c44Sab196087 extern	const char	*conv_sym_info_type(Half, uchar_t, Conv_fmt_flags_t,
1028de777a60Sab196087 			    Conv_inv_buf_t *);
1029de777a60Sab196087 extern	const char	*conv_sym_shndx(Half, Conv_inv_buf_t *);
1030de777a60Sab196087 extern	const char	*conv_sym_other(uchar_t, Conv_inv_buf_t *);
1031d29b2c44Sab196087 extern	const char	*conv_sym_other_vis(uchar_t, Conv_fmt_flags_t,
1032d29b2c44Sab196087 			    Conv_inv_buf_t *);
1033de777a60Sab196087 extern	const char	*conv_sym_value(Half, uchar_t, Addr, Conv_inv_buf_t *);
1034d29b2c44Sab196087 extern	const char	*conv_sym_SPARC_value(Addr, Conv_fmt_flags_t,
1035d29b2c44Sab196087 			    Conv_inv_buf_t *);
1036c6c9aed4Sab196087 extern	const char	*conv_syminfo_flags(Xword, Conv_fmt_flags_t,
1037c6c9aed4Sab196087 			    Conv_syminfo_flags_buf_t *);
10387c478bd9Sstevel@tonic-gate 
10397c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
10407c478bd9Sstevel@tonic-gate }
10417c478bd9Sstevel@tonic-gate #endif
10427c478bd9Sstevel@tonic-gate 
10437c478bd9Sstevel@tonic-gate #endif /* _CONV_H */
1044