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