conv.h revision d840867f3a8b0ba209ef90762b3f9c72a5f92cc5
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * CDDL HEADER START
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * The contents of this file are subject to the terms of the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Common Development and Distribution License (the "License").
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * You may not use this file except in compliance with the License.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * or http://www.opensolaris.org/os/licensing.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * See the License for the specific language governing permissions
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * and limitations under the License.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * When distributing Covered Code, include this CDDL HEADER in each
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * If applicable, add the following below this CDDL HEADER, with the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * fields enclosed by brackets "[]" replaced with your own identifying
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * information: Portions Copyright [yyyy] [name of copyright owner]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * CDDL HEADER END
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner * Copyright (c) 1988 AT&T
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * All Rights Reserved
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * Use is subject to license terms.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef _CONV_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define _CONV_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#pragma ident "%Z%%M% %I% %E% SMI"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Global include file for conversion library.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <stdlib.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <libelf.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <dlfcn.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <libld.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <sgs.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <machdep.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner#ifdef __cplusplus
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulknerextern "C" {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner#endif
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner/*
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner * Configuration features available - maintained here (instead of debug.h)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner * to save libconv from having to include debug.h which results in numerous
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner * "declared but not used or defined" lint errors.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define CONF_EDLIBPATH 0x000100 /* ELF default library path */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#define CONF_ESLIBPATH 0x000200 /* ELF secure library path */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#define CONF_ADLIBPATH 0x000400 /* AOUT default library path */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define CONF_ASLIBPATH 0x000800 /* AOUT secure library path */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define CONF_DIRCFG 0x001000 /* directory configuration available */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define CONF_OBJALT 0x002000 /* object alternatives available */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define CONF_MEMRESV 0x004000 /* memory reservation required */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define CONF_ENVS 0x008000 /* environment variables available */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define CONF_FLTR 0x010000 /* filter information available */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define CONF_FEATMSK 0xffff00
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Various values that can't be matched to a symbolic definition are converted
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * to a numeric string. Each function that may require this fallback maintains
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * its own static string buffer, as many conversion routines may be called for
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * one final diagnostic. See conv_invalid_val().
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * The string size reflects the largest possible decimal number plus a trailing
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * null. Typically however, values are hex with a leading "0x".
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if defined(_ELF64)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define CONV_INV_STRSIZE 22
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#define CONV_INV_STRSIZE 12
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin/*
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * Some libconv routines require the caller to supply the buffer used by
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * conv_invalid_val().
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chintypedef char Conv_inv_buf_t[CONV_INV_STRSIZE];
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Flags that alter standard formatting for conversion routines.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define CONV_FMT_DECIMAL 0x01 /* conv_invalid_val() should print */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin /* integer print as decimal */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin /* (default is hex) */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define CONV_FMT_SPACE 0x02 /* conv_invalid_val() should append */
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner /* a space after the number. */
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner#define CONV_FMT_ALTDUMP 0x04 /* Output strings using the versions */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin /* used by the dump program. */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define CONV_FMT_ALTFILE 0x08 /* Output strings in the form used */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin /* by the file(1) command */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define CONV_FMT_ALTCRLE 0x10 /* Output strings in the form used */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin /* by the crle(1) command */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Mask of CONV_FMT bits that reflect a desire to use alternate strings.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define CONV_FMTALTMASK (CONV_FMT_ALTDUMP | CONV_FMT_ALTFILE)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * The expansion of bit-field data items is driven from a value descriptor and
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * the conv_expn_field() routine.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintypedef struct {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz Xword v_val; /* expansion value */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin const char *v_msg; /* associated message string */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin} Val_desc;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * conv_expn_field() is willing to supply default strings for the
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * prefix, separator, and suffix arguments, if they are passed as NULL.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * The caller needs to know how much room to allow for these items.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * These values supply those sizes.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#define CONV_EXPN_FIELD_DEF_PREFIX_SIZE 2 /* Default is "[ " */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#define CONV_EXPN_FIELD_DEF_SEP_SIZE 1 /* Default is " " */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#define CONV_EXPN_FIELD_DEF_SUFFIX_SIZE 2 /* Default is " ]" */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * conv_expn_field() requires a large number of inputs, many of which
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * can be NULL to accept default behavior. An argument of the following
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * type is used to supply them.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintypedef struct {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char *buf; /* Buffer to receive generated string */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin size_t bufsize; /* sizeof(buf) */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin const Val_desc *vdp; /* Array of value descriptors, giving the */
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner /* possible bit values, and their */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin /* corresponding strings. Note that the */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin /* final element must contain only NULL */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin /* values. This terminates the list. */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin const char **lead_str; /* NULL, or array of pointers to strings to */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin /* be output at the head of the list. */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin /* Last entry must be NULL. */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin Xword oflags; /* Bits for which output strings are desired */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin Xword rflags; /* Bits for which a numeric value should be */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin /* output if vdp does not provide str. */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin /* Must be a proper subset of oflags */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin const char *prefix; /* NULL, or string to prefix output with */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz /* If NULL, "[ " is used. */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin const char *sep; /* NULL, or string to separate output items */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin /* with. If NULL, " " is used. */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin const char *suffix; /* NULL, or string to suffix output with */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin /* If NULL, " ]" is used. */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin} CONV_EXPN_FIELD_ARG;
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin/*
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin * Define all generic interfaces.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinextern uchar_t conv_check_native(char **, char **);
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinextern const char *conv_config_feat(int);
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinextern const char *conv_config_obj(ushort_t);
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinextern const char *conv_config_upm(const char *, const char *,
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner const char *, size_t);
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinextern const char *conv_def_tag(Symref);
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinextern const char *conv_demangle_name(const char *);
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinextern const char *conv_dl_flag(int, int);
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinextern const char *conv_dl_mode(int, int);
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinextern const char *conv_dwarf_ehe(uint_t);
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinextern const char *conv_elfdata_type(Elf_Type);
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinextern const char *conv_grphdl_flags(uint_t);
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinextern const char *conv_grpdesc_flags(uint_t);
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinextern Isa_desc *conv_isalist(void);
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinextern const char *conv_lddstub(int);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char *conv_seg_flags(Half);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern int conv_sys_eclass();
extern Uts_desc *conv_uts(void);
extern const char *conv_ver_flags(Half);
extern const char *conv_ver_index(Versym, int);
/*
* Define all class specific routines.
*/
#if defined(_ELF64)
#define conv_bnd_obj conv64_bnd_obj
#define conv_bnd_type conv64_bnd_type
#define conv_cap_tag conv64_cap_tag
#define conv_cap_val conv64_cap_val
#define conv_cap_val_hw1 conv64_cap_val_hw1
#define conv_cap_val_sf1 conv64_cap_val_sf1
#define conv_dyn_feature1 conv64_dyn_feature1
#define conv_dyn_flag1 conv64_dyn_flag1
#define conv_dyn_flag conv64_dyn_flag
#define conv_dyn_posflag1 conv64_dyn_posflag1
#define conv_dyn_tag conv64_dyn_tag
#define conv_ehdr_class conv64_ehdr_class
#define conv_ehdr_data conv64_ehdr_data
#define conv_ehdr_flags conv64_ehdr_flags
#define conv_ehdr_mach conv64_ehdr_mach
#define conv_ehdr_osabi conv64_ehdr_osabi
#define conv_ehdr_type conv64_ehdr_type
#define conv_ehdr_vers conv64_ehdr_vers
#define conv_expn_field conv64_expn_field
#define conv_invalid_val conv64_invalid_val
#define conv_phdr_flags conv64_phdr_flags
#define conv_phdr_type conv64_phdr_type
#define conv_reject_desc conv64_reject_desc
#define conv_reloc_type conv64_reloc_type
#define conv_reloc_386_type conv64_reloc_386_type
#define conv_reloc_amd64_type conv64_reloc_amd64_type
#define conv_reloc_SPARC_type conv64_reloc_SPARC_type
#define conv_sec_flags conv64_sec_flags
#define conv_sec_linkinfo conv64_sec_linkinfo
#define conv_sec_type conv64_sec_type
#define conv_sym_info_bind conv64_sym_info_bind
#define conv_sym_info_type conv64_sym_info_type
#define conv_sym_shndx conv64_sym_shndx
#define conv_sym_other conv64_sym_other
#define conv_sym_value conv64_sym_value
#define conv_sym_SPARC_value conv64_sym_SPARC_value
#else
#define conv_bnd_obj conv32_bnd_obj
#define conv_bnd_type conv32_bnd_type
#define conv_cap_tag conv32_cap_tag
#define conv_cap_val conv32_cap_val
#define conv_cap_val_hw1 conv32_cap_val_hw1
#define conv_cap_val_sf1 conv32_cap_val_sf1
#define conv_dyn_feature1 conv32_dyn_feature1
#define conv_dyn_flag1 conv32_dyn_flag1
#define conv_dyn_flag conv32_dyn_flag
#define conv_dyn_posflag1 conv32_dyn_posflag1
#define conv_dyn_tag conv32_dyn_tag
#define conv_ehdr_class conv32_ehdr_class
#define conv_ehdr_data conv32_ehdr_data
#define conv_ehdr_flags conv32_ehdr_flags
#define conv_ehdr_mach conv32_ehdr_mach
#define conv_ehdr_osabi conv32_ehdr_osabi
#define conv_ehdr_type conv32_ehdr_type
#define conv_ehdr_vers conv32_ehdr_vers
#define conv_expn_field conv32_expn_field
#define conv_invalid_val conv32_invalid_val
#define conv_phdr_flags conv32_phdr_flags
#define conv_phdr_type conv32_phdr_type
#define conv_reject_desc conv32_reject_desc
#define conv_reloc_type conv32_reloc_type
#define conv_reloc_386_type conv32_reloc_386_type
#define conv_reloc_amd64_type conv32_reloc_amd64_type
#define conv_reloc_SPARC_type conv32_reloc_SPARC_type
#define conv_sec_flags conv32_sec_flags
#define conv_sec_linkinfo conv32_sec_linkinfo
#define conv_sec_type conv32_sec_type
#define conv_sym_info_bind conv32_sym_info_bind
#define conv_sym_info_type conv32_sym_info_type
#define conv_sym_shndx conv32_sym_shndx
#define conv_sym_other conv32_sym_other
#define conv_sym_value conv32_sym_value
#define conv_sym_SPARC_value conv32_sym_SPARC_value
#endif
extern const char *conv_bnd_obj(uint_t);
extern const char *conv_bnd_type(uint_t);
extern const char *conv_cap_tag(Xword);
extern const char *conv_cap_val(Xword, Xword, Half);
extern const char *conv_cap_val_hw1(Xword, Half);
extern const char *conv_cap_val_sf1(Xword, Half);
extern const char *conv_dyn_flag1(Xword);
extern const char *conv_dyn_flag(Xword, int);
extern const char *conv_dyn_posflag1(Xword, int);
extern const char *conv_dyn_tag(Xword, Half, int);
extern const char *conv_dyn_feature1(Xword, int);
extern const char *conv_ehdr_class(uchar_t, int);
extern const char *conv_ehdr_data(uchar_t, int);
extern const char *conv_ehdr_flags(Half, Word);
extern const char *conv_ehdr_mach(Half, int);
extern const char *conv_ehdr_osabi(uchar_t, int);
extern const char *conv_ehdr_type(Half, int);
extern const char *conv_ehdr_vers(Word, int);
extern int conv_expn_field(CONV_EXPN_FIELD_ARG *);
extern const char *conv_invalid_val(char *, size_t, Xword, int);
extern const char *conv_phdr_flags(Word);
extern const char *conv_phdr_type(Half, Word, int);
extern const char *conv_reject_desc(Rej_desc *);
extern const char *conv_reloc_type(Half, Word, int);
extern const char *conv_reloc_386_type(Word, int);
extern const char *conv_reloc_amd64_type(Word, int);
extern const char *conv_reloc_SPARC_type(Word, int);
extern const char *conv_sec_flags(Xword);
extern const char *conv_sec_linkinfo(Word, Xword, Conv_inv_buf_t);
extern const char *conv_sec_type(Half, Word, int);
extern const char *conv_sym_info_bind(uchar_t, int);
extern const char *conv_sym_info_type(Half, uchar_t, int);
extern const char *conv_sym_shndx(Half);
extern const char *conv_sym_other(uchar_t);
extern const char *conv_sym_value(Half, uchar_t, Addr);
extern const char *conv_sym_SPARC_value(Addr, int);
#ifdef __cplusplus
}
#endif
#endif /* _CONV_H */