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. 275aefb655Srie * 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 /* 67de777a60Sab * Buffer types: 68de777a60Sab * 69de777a60Sab * Many of the routines in this module require the user to supply a 70de777a60Sab * buffer into which the desired strings may be written. These are 71de777a60Sab * all arrays of characters, and might be defined as simple arrays 72de777a60Sab * of char. The problem with that approach is that when such an array 73de777a60Sab * is passed to a function, the C language considers it to have the 74de777a60Sab * type (char *), without any regard to its length. Not all of our 75de777a60Sab * buffers have the same length, and we want to ensure that the compiler 76de777a60Sab * will refuse to compile code that passes the wrong type of buffer to 77de777a60Sab * a given routine. The solution is to define the buffers as unions 78de777a60Sab * that contain the needed array, and then to pass the given union 79de777a60Sab * by address. The compiler will catch attempts to pass the wrong type 80de777a60Sab * of pointer, and the size of a structure/union is implicit in its type. 81de777a60Sab * 82de777a60Sab * A nice side effect of this approach is that we can use a union with 83de777a60Sab * multiple buffers to handle the cases where a given routine needs 84de777a60Sab * more than one type of buffer. The end result is a single buffer large 85de777a60Sab * enough to handle any of the subcases, but no larger. 86de777a60Sab */ 87de777a60Sab 88de777a60Sab /* 89de777a60Sab * Size of buffer used by conv_invalid_val(): 90de777a60Sab * 915aefb655Srie * Various values that can't be matched to a symbolic definition are converted 92de777a60Sab * to a numeric string. 935aefb655Srie * 94de777a60Sab * The buffer size reflects the maximum number of digits needed to 95de777a60Sab * display an integer as text, plus a trailing null, and with room for 96de777a60Sab * a leading "0x" if hexidecimal display is selected. 97de777a60Sab */ 98de777a60Sab #define CONV32_INV_BUFSIZE 12 99de777a60Sab typedef union { 100de777a60Sab char buf[CONV32_INV_BUFSIZE]; 101de777a60Sab } Conv32_inv_buf_t; 102de777a60Sab 103de777a60Sab #define CONV64_INV_BUFSIZE 22 104de777a60Sab typedef union { 105de777a60Sab char buf[CONV64_INV_BUFSIZE]; 106de777a60Sab } Conv64_inv_buf_t; 107de777a60Sab 108de777a60Sab 109de777a60Sab 110de777a60Sab /* conv_ehdr_flags() */ 111*d29b2c44Sab #define CONV_EHDR_FLAGS_BASE_BUFSIZE 69 112de777a60Sab #define CONV32_EHDR_FLAGS_BUFSIZE \ 113*d29b2c44Sab (CONV_EHDR_FLAGS_BASE_BUFSIZE + CONV32_INV_BUFSIZE) 114de777a60Sab typedef union { 115de777a60Sab Conv32_inv_buf_t inv_buf; 116de777a60Sab char buf[CONV32_EHDR_FLAGS_BUFSIZE]; 117de777a60Sab } Conv32_ehdr_flags_buf_t; 118de777a60Sab 119de777a60Sab #define CONV64_EHDR_FLAGS_BUFSIZE \ 120*d29b2c44Sab (CONV_EHDR_FLAGS_BASE_BUFSIZE + CONV64_INV_BUFSIZE) 121de777a60Sab typedef union { 122de777a60Sab Conv64_inv_buf_t inv_buf; 123de777a60Sab char buf[CONV64_EHDR_FLAGS_BUFSIZE]; 124de777a60Sab } Conv64_ehdr_flags_buf_t; 125de777a60Sab 126de777a60Sab 127de777a60Sab /* conv_reject_desc() */ 128de777a60Sab typedef union { 129de777a60Sab Conv32_inv_buf_t inv_buf; 130de777a60Sab Conv32_ehdr_flags_buf_t flags_buf; 131de777a60Sab } Conv32_reject_desc_buf_t; 132de777a60Sab 133de777a60Sab typedef union { 134de777a60Sab Conv64_inv_buf_t inv_buf; 135de777a60Sab Conv64_ehdr_flags_buf_t flags_buf; 136de777a60Sab } Conv64_reject_desc_buf_t; 137de777a60Sab 138de777a60Sab 139de777a60Sab /* 140de777a60Sab * conv_cap_val_hw1() 141de777a60Sab * 142de777a60Sab * This size is based on the maximum number of hardware capabilities 143de777a60Sab * that exist. See common/elfcap. 144de777a60Sab */ 145de777a60Sab #define CONV_CAP_VAL_HW1_BUFSIZE 195 146de777a60Sab 147de777a60Sab typedef union { 148de777a60Sab Conv32_inv_buf_t inv_buf; 149de777a60Sab char buf[CONV_CAP_VAL_HW1_BUFSIZE]; 150de777a60Sab } Conv32_cap_val_hw1_buf_t; 151de777a60Sab 152de777a60Sab typedef union { 153de777a60Sab Conv64_inv_buf_t inv_buf; 154de777a60Sab char buf[CONV_CAP_VAL_HW1_BUFSIZE]; 155de777a60Sab } Conv64_cap_val_hw1_buf_t; 156de777a60Sab 157de777a60Sab 158de777a60Sab /* 159de777a60Sab * conv_cap_val_sf1() 160de777a60Sab * 161de777a60Sab * This size is based on the maximum number of software capabilities 162de777a60Sab * that exist. See common/elfcap. 163de777a60Sab */ 164de777a60Sab #define CONV_CAP_VAL_SF1_BUFSIZE 45 165de777a60Sab 166de777a60Sab typedef union { 167de777a60Sab Conv32_inv_buf_t inv_buf; 168de777a60Sab char buf[CONV_CAP_VAL_SF1_BUFSIZE]; 169de777a60Sab } Conv32_cap_val_sf1_buf_t; 170de777a60Sab 171de777a60Sab typedef union { 172de777a60Sab Conv64_inv_buf_t inv_buf; 173de777a60Sab char buf[CONV_CAP_VAL_SF1_BUFSIZE]; 174de777a60Sab } Conv64_cap_val_sf1_buf_t; 175de777a60Sab 176de777a60Sab 177de777a60Sab 178de777a60Sab /* conv_cap_val_buf() */ 179de777a60Sab typedef union { 180de777a60Sab Conv32_inv_buf_t inv_buf; 181de777a60Sab Conv32_cap_val_hw1_buf_t cap_val_hw1_buf; 182de777a60Sab Conv32_cap_val_sf1_buf_t cap_val_sf1_buf; 183de777a60Sab } Conv32_cap_val_buf_t; 184de777a60Sab 185de777a60Sab typedef union { 186de777a60Sab Conv64_inv_buf_t inv_buf; 187de777a60Sab Conv64_cap_val_hw1_buf_t cap_val_hw1_buf; 188de777a60Sab Conv64_cap_val_sf1_buf_t cap_val_sf1_buf; 189de777a60Sab } Conv64_cap_val_buf_t; 190de777a60Sab 191de777a60Sab 192de777a60Sab /* conv_config_feat() */ 193de777a60Sab #define CONV_CONFIG_FEAT_BUFSIZE 195 194de777a60Sab 195de777a60Sab typedef union { 196de777a60Sab Conv32_inv_buf_t inv_buf; 197de777a60Sab char buf[CONV_CONFIG_FEAT_BUFSIZE]; 198de777a60Sab } Conv32_config_feat_buf_t; 199de777a60Sab 200de777a60Sab typedef union { 201de777a60Sab Conv64_inv_buf_t inv_buf; 202de777a60Sab char buf[CONV_CONFIG_FEAT_BUFSIZE]; 203de777a60Sab } Conv64_config_feat_buf_t; 204de777a60Sab 205de777a60Sab 206de777a60Sab /* conv_config_obj() */ 207de777a60Sab #define CONV_CONFIG_OBJ_BUFSIZE 154 208de777a60Sab 209de777a60Sab typedef union { 210de777a60Sab Conv32_inv_buf_t inv_buf; 211de777a60Sab char buf[CONV_CONFIG_OBJ_BUFSIZE]; 212de777a60Sab } Conv32_config_obj_buf_t; 213de777a60Sab 214de777a60Sab typedef union { 215de777a60Sab Conv64_inv_buf_t inv_buf; 216de777a60Sab char buf[CONV_CONFIG_OBJ_BUFSIZE]; 217de777a60Sab } Conv64_config_obj_buf_t; 218de777a60Sab 219de777a60Sab 220de777a60Sab /* conv_dl_mode() */ 221de777a60Sab #define CONV_DL_MODE_BUFSIZE 122 222de777a60Sab 223de777a60Sab typedef union { 224de777a60Sab Conv32_inv_buf_t inv_buf; 225de777a60Sab char buf[CONV_DL_MODE_BUFSIZE]; 226de777a60Sab } Conv32_dl_mode_buf_t; 227de777a60Sab 228de777a60Sab typedef union { 229de777a60Sab Conv64_inv_buf_t inv_buf; 230de777a60Sab char buf[CONV_DL_MODE_BUFSIZE]; 231de777a60Sab } Conv64_dl_mode_buf_t; 232de777a60Sab 233de777a60Sab 234de777a60Sab /* conv_dl_flag() */ 235de777a60Sab #define CONV_DL_FLAG_BUFSIZE 195 236de777a60Sab 237de777a60Sab typedef union { 238de777a60Sab Conv32_inv_buf_t inv_buf; 239de777a60Sab char buf[CONV_DL_FLAG_BUFSIZE]; 240de777a60Sab } Conv32_dl_flag_buf_t; 241de777a60Sab 242de777a60Sab typedef union { 243de777a60Sab Conv64_inv_buf_t inv_buf; 244de777a60Sab char buf[CONV_DL_FLAG_BUFSIZE]; 245de777a60Sab } Conv64_dl_flag_buf_t; 246de777a60Sab 247de777a60Sab 248de777a60Sab /* conv_grphdl_flags() */ 2498af2c5b9Srie #define CONV_GRPHDL_FLAGS_BUFSIZE 82 250de777a60Sab 251de777a60Sab typedef union { 252de777a60Sab Conv32_inv_buf_t inv_buf; 253de777a60Sab char buf[CONV_GRPHDL_FLAGS_BUFSIZE]; 254de777a60Sab } Conv32_grphdl_flags_buf_t; 255de777a60Sab 256de777a60Sab typedef union { 257de777a60Sab Conv64_inv_buf_t inv_buf; 258de777a60Sab char buf[CONV_GRPHDL_FLAGS_BUFSIZE]; 259de777a60Sab } Conv64_grphdl_flags_buf_t; 260de777a60Sab 261de777a60Sab 262de777a60Sab /* conv_grpdesc_flags() */ 2638af2c5b9Srie #define CONV_GRPDESC_FLAGS_BUFSIZE 92 264de777a60Sab 265de777a60Sab typedef union { 266de777a60Sab Conv32_inv_buf_t inv_buf; 267de777a60Sab char buf[CONV_GRPDESC_FLAGS_BUFSIZE]; 268de777a60Sab } Conv32_grpdesc_flags_buf_t; 269de777a60Sab 270de777a60Sab typedef union { 271de777a60Sab Conv64_inv_buf_t inv_buf; 272de777a60Sab char buf[CONV_GRPDESC_FLAGS_BUFSIZE]; 273de777a60Sab } Conv64_grpdesc_flags_buf_t; 274de777a60Sab 275de777a60Sab 276de777a60Sab /* conv_seg_flags() */ 277de777a60Sab #define CONV_SEG_FLAGS_BUFSIZE 186 278de777a60Sab 279de777a60Sab typedef union { 280de777a60Sab Conv32_inv_buf_t inv_buf; 281de777a60Sab char buf[CONV_SEG_FLAGS_BUFSIZE]; 282de777a60Sab } Conv32_seg_flags_buf_t; 283de777a60Sab 284de777a60Sab typedef union { 285de777a60Sab Conv64_inv_buf_t inv_buf; 286de777a60Sab char buf[CONV_SEG_FLAGS_BUFSIZE]; 287de777a60Sab } Conv64_seg_flags_buf_t; 288de777a60Sab 289de777a60Sab 290de777a60Sab /* conv_dyn_posflag1() */ 291*d29b2c44Sab #define CONV_DYN_POSFLAG1_BASE_BUFSIZE 23 292de777a60Sab #define CONV32_DYN_POSFLAG1_BUFSIZE \ 293*d29b2c44Sab (CONV_DYN_POSFLAG1_BASE_BUFSIZE + CONV32_INV_BUFSIZE) 294de777a60Sab typedef union { 295de777a60Sab Conv32_inv_buf_t inv_buf; 296de777a60Sab char buf[CONV32_DYN_POSFLAG1_BUFSIZE]; 297de777a60Sab } Conv32_dyn_posflag1_buf_t; 298de777a60Sab 299de777a60Sab #define CONV64_DYN_POSFLAG1_BUFSIZE \ 300*d29b2c44Sab (CONV_DYN_POSFLAG1_BASE_BUFSIZE + CONV64_INV_BUFSIZE) 301de777a60Sab typedef union { 302de777a60Sab Conv64_inv_buf_t inv_buf; 303de777a60Sab char buf[CONV64_DYN_POSFLAG1_BUFSIZE]; 304de777a60Sab } Conv64_dyn_posflag1_buf_t; 305de777a60Sab 306de777a60Sab 307de777a60Sab /* conv_dyn_flag() */ 308*d29b2c44Sab #define CONV_DYN_FLAG_BASE_BUFSIZE 48 309de777a60Sab #define CONV32_DYN_FLAG_BUFSIZE \ 310*d29b2c44Sab (CONV_DYN_FLAG_BASE_BUFSIZE + CONV32_INV_BUFSIZE) 311de777a60Sab typedef union { 312de777a60Sab Conv32_inv_buf_t inv_buf; 313de777a60Sab char buf[CONV32_DYN_FLAG_BUFSIZE]; 314de777a60Sab } Conv32_dyn_flag_buf_t; 315de777a60Sab 316de777a60Sab #define CONV64_DYN_FLAG_BUFSIZE \ 317*d29b2c44Sab (CONV_DYN_FLAG_BASE_BUFSIZE + CONV64_INV_BUFSIZE) 318de777a60Sab typedef union { 319de777a60Sab Conv64_inv_buf_t inv_buf; 320de777a60Sab char buf[CONV64_DYN_FLAG_BUFSIZE]; 321de777a60Sab } Conv64_dyn_flag_buf_t; 322de777a60Sab 323de777a60Sab 324de777a60Sab /* conv_dyn_flag1() */ 325*d29b2c44Sab #define CONV_DYN_FLAG1_BASE_BUFSIZE 223 326de777a60Sab #define CONV32_DYN_FLAG1_BUFSIZE \ 327*d29b2c44Sab (CONV_DYN_FLAG1_BASE_BUFSIZE + CONV32_INV_BUFSIZE) 328de777a60Sab typedef union { 329de777a60Sab Conv32_inv_buf_t inv_buf; 330de777a60Sab char buf[CONV32_DYN_FLAG1_BUFSIZE]; 331de777a60Sab } Conv32_dyn_flag1_buf_t; 332de777a60Sab 333de777a60Sab #define CONV64_DYN_FLAG1_BUFSIZE \ 334*d29b2c44Sab (CONV_DYN_FLAG1_BASE_BUFSIZE + CONV64_INV_BUFSIZE) 335de777a60Sab typedef union { 336de777a60Sab Conv64_inv_buf_t inv_buf; 337de777a60Sab char buf[CONV64_DYN_FLAG1_BUFSIZE]; 338de777a60Sab } Conv64_dyn_flag1_buf_t; 339de777a60Sab 340de777a60Sab 341de777a60Sab /* conv_dyn_feature1() */ 342*d29b2c44Sab #define CONV_DYN_FEATURE1_BASE_BUFSIZE 20 343de777a60Sab #define CONV32_DYN_FEATURE1_BUFSIZE \ 344*d29b2c44Sab (CONV_DYN_FEATURE1_BASE_BUFSIZE + CONV32_INV_BUFSIZE) 345de777a60Sab typedef union { 346de777a60Sab Conv32_inv_buf_t inv_buf; 347de777a60Sab char buf[CONV32_DYN_FEATURE1_BUFSIZE]; 348de777a60Sab } Conv32_dyn_feature1_buf_t; 349de777a60Sab 350de777a60Sab #define CONV64_DYN_FEATURE1_BUFSIZE \ 351*d29b2c44Sab (CONV_DYN_FEATURE1_BASE_BUFSIZE + CONV64_INV_BUFSIZE) 352de777a60Sab typedef union { 353de777a60Sab Conv64_inv_buf_t inv_buf; 354de777a60Sab char buf[CONV64_DYN_FEATURE1_BUFSIZE]; 355de777a60Sab } Conv64_dyn_feature1_buf_t; 356de777a60Sab 357de777a60Sab 358de777a60Sab /* conv_bnd_type() */ 359*d29b2c44Sab #define CONV_BND_TYPE_BASE_BUFSIZE 29 360de777a60Sab #define CONV32_BND_TYPE_BUFSIZE \ 361*d29b2c44Sab (CONV_BND_TYPE_BASE_BUFSIZE + CONV32_INV_BUFSIZE) 362de777a60Sab typedef union { 363de777a60Sab Conv32_inv_buf_t inv_buf; 364de777a60Sab char buf[CONV32_BND_TYPE_BUFSIZE]; 365de777a60Sab } Conv32_bnd_type_buf_t; 366de777a60Sab 367de777a60Sab #define CONV64_BND_TYPE_BUFSIZE \ 368*d29b2c44Sab (CONV_BND_TYPE_BASE_BUFSIZE + CONV64_INV_BUFSIZE) 369de777a60Sab typedef union { 370de777a60Sab Conv64_inv_buf_t inv_buf; 371de777a60Sab char buf[CONV64_BND_TYPE_BUFSIZE]; 372de777a60Sab } Conv64_bnd_type_buf_t; 373de777a60Sab 374de777a60Sab 375de777a60Sab /* conv_bnd_obj() */ 376*d29b2c44Sab #define CONV_BND_OBJ_BASE_BUFSIZE 38 377de777a60Sab #define CONV32_BND_OBJ_BUFSIZE \ 378*d29b2c44Sab (CONV_BND_OBJ_BASE_BUFSIZE + CONV32_INV_BUFSIZE) 379de777a60Sab typedef union { 380de777a60Sab Conv32_inv_buf_t inv_buf; 381de777a60Sab char buf[CONV32_BND_OBJ_BUFSIZE]; 382de777a60Sab } Conv32_bnd_obj_buf_t; 383de777a60Sab 384de777a60Sab #define CONV64_BND_OBJ_BUFSIZE \ 385*d29b2c44Sab (CONV_BND_OBJ_BASE_BUFSIZE + CONV64_INV_BUFSIZE) 386de777a60Sab typedef union { 387de777a60Sab Conv64_inv_buf_t inv_buf; 388de777a60Sab char buf[CONV64_BND_OBJ_BUFSIZE]; 389de777a60Sab } Conv64_bnd_obj_buf_t; 390de777a60Sab 391de777a60Sab 392de777a60Sab /* conv_phdr_flags() */ 393*d29b2c44Sab #define CONV_PHDR_FLAGS_BASE_BUFSIZE 35 394de777a60Sab #define CONV32_PHDR_FLAGS_BUFSIZE \ 395*d29b2c44Sab (CONV_PHDR_FLAGS_BASE_BUFSIZE + CONV32_INV_BUFSIZE) 396de777a60Sab typedef union { 397de777a60Sab Conv32_inv_buf_t inv_buf; 398de777a60Sab char buf[CONV32_PHDR_FLAGS_BUFSIZE]; 399de777a60Sab } Conv32_phdr_flags_buf_t; 400de777a60Sab 401de777a60Sab #define CONV64_PHDR_FLAGS_BUFSIZE \ 402*d29b2c44Sab (CONV_PHDR_FLAGS_BASE_BUFSIZE + CONV64_INV_BUFSIZE) 403de777a60Sab typedef union { 404de777a60Sab Conv64_inv_buf_t inv_buf; 405de777a60Sab char buf[CONV64_PHDR_FLAGS_BUFSIZE]; 406de777a60Sab } Conv64_phdr_flags_buf_t; 407de777a60Sab 408de777a60Sab 409de777a60Sab /* conv_sec_flags() */ 410*d29b2c44Sab #define CONV_SEC_FLAGS_BASE_BUFSIZE 168 411de777a60Sab #define CONV32_SEC_FLAGS_BUFSIZE \ 412*d29b2c44Sab (CONV_SEC_FLAGS_BASE_BUFSIZE + CONV32_INV_BUFSIZE) 413de777a60Sab typedef union { 414de777a60Sab Conv32_inv_buf_t inv_buf; 415de777a60Sab char buf[CONV32_SEC_FLAGS_BUFSIZE]; 416de777a60Sab } Conv32_sec_flags_buf_t; 417de777a60Sab 418de777a60Sab #define CONV64_SEC_FLAGS_BUFSIZE \ 419*d29b2c44Sab (CONV_SEC_FLAGS_BASE_BUFSIZE + CONV64_INV_BUFSIZE) 420de777a60Sab typedef union { 421de777a60Sab Conv64_inv_buf_t inv_buf; 422de777a60Sab char buf[CONV64_SEC_FLAGS_BUFSIZE]; 423de777a60Sab } Conv64_sec_flags_buf_t; 424de777a60Sab 425de777a60Sab 426de777a60Sab /* conv_dwarf_ehe() */ 427de777a60Sab #define CONV_DWARF_EHE_BUFSIZE 33 428de777a60Sab typedef union { 429de777a60Sab Conv32_inv_buf_t inv_buf; 430de777a60Sab char buf[CONV_DWARF_EHE_BUFSIZE]; 431de777a60Sab } Conv32_dwarf_ehe_buf_t; 432de777a60Sab typedef union { 433de777a60Sab Conv64_inv_buf_t inv_buf; 434de777a60Sab char buf[CONV_DWARF_EHE_BUFSIZE]; 435de777a60Sab } Conv64_dwarf_ehe_buf_t; 436de777a60Sab 437de777a60Sab 438*d29b2c44Sab /* conv_syminfo_flags() */ 439*d29b2c44Sab #define CONV_SYMINFO_FLAGS_BASE_BUFSIZE 36 440*d29b2c44Sab #define CONV32_SYMINFO_FLAGS_BUFSIZE \ 441*d29b2c44Sab (CONV_SYMINFO_FLAGS_BASE_BUFSIZE + CONV32_INV_BUFSIZE) 442*d29b2c44Sab typedef union { 443*d29b2c44Sab Conv32_inv_buf_t inv_buf; 444*d29b2c44Sab char buf[CONV32_SYMINFO_FLAGS_BUFSIZE]; 445*d29b2c44Sab } Conv32_syminfo_flags_buf_t; 446*d29b2c44Sab 447*d29b2c44Sab #define CONV64_SYMINFO_FLAGS_BUFSIZE \ 448*d29b2c44Sab (CONV_SYMINFO_FLAGS_BASE_BUFSIZE + CONV64_INV_BUFSIZE) 449*d29b2c44Sab typedef union { 450*d29b2c44Sab Conv64_inv_buf_t inv_buf; 451*d29b2c44Sab char buf[CONV64_SYMINFO_FLAGS_BUFSIZE]; 452*d29b2c44Sab } Conv64_syminfo_flags_buf_t; 453*d29b2c44Sab 454*d29b2c44Sab 455de777a60Sab 456de777a60Sab /* 457de777a60Sab * Generic names for class specific buffer types above 4585aefb655Srie */ 4595aefb655Srie #if defined(_ELF64) 460de777a60Sab #define CONV_INV_BUFSIZE CONV64_INV_BUFSIZE 461de777a60Sab #define CONV_EHDR_FLAGS_BUFSIZE CONV64_EHDR_FLAGS_BUFSIZE 462de777a60Sab #define CONV_DYN_POSFLAG1_BUFSIZE CONV64_DYN_POSFLAG1_BUFSIZE 463de777a60Sab #define CONV_DYN_FLAG_BUFSIZE CONV64_DYN_FLAG_BUFSIZE 464de777a60Sab #define CONV_DYN_FLAG1_BUFSIZE CONV64_DYN_FLAG1_BUFSIZE 465de777a60Sab #define CONV_DYN_FEATURE1_BUFSIZE CONV64_DYN_FEATURE1_BUFSIZE 466de777a60Sab #define CONV_BND_TYPE_BUFSIZE CONV64_BND_TYPE_BUFSIZE 467de777a60Sab #define CONV_BND_OBJ_BUFSIZE CONV64_BND_OBJ_BUFSIZE 468de777a60Sab #define CONV_PHDR_FLAGS_BUFSIZE CONV64_PHDR_FLAGS_BUFSIZE 469de777a60Sab #define CONV_SEC_FLAGS_BUFSIZE CONV64_SEC_FLAGS_BUFSIZE 470*d29b2c44Sab #define CONV_SYMINFO_FLAGS_BUFSIZE CONV64_SYMINFO_FLAGS_BUFSIZE 471de777a60Sab 472de777a60Sab #define Conv_inv_buf_t Conv64_inv_buf_t 473de777a60Sab #define Conv_ehdr_flags_buf_t Conv64_ehdr_flags_buf_t 474de777a60Sab #define Conv_reject_desc_buf_t Conv64_reject_desc_buf_t 475de777a60Sab #define Conv_cap_val_hw1_buf_t Conv64_cap_val_hw1_buf_t 476de777a60Sab #define Conv_cap_val_sf1_buf_t Conv64_cap_val_sf1_buf_t 477de777a60Sab #define Conv_cap_val_buf_t Conv64_cap_val_buf_t 478de777a60Sab #define Conv_config_feat_buf_t Conv64_config_feat_buf_t 479de777a60Sab #define Conv_config_obj_buf_t Conv64_config_obj_buf_t 480de777a60Sab #define Conv_dl_mode_buf_t Conv64_dl_mode_buf_t 481de777a60Sab #define Conv_dl_flag_buf_t Conv64_dl_flag_buf_t 482de777a60Sab #define Conv_grphdl_flags_buf_t Conv64_grphdl_flags_buf_t 483de777a60Sab #define Conv_grpdesc_flags_buf_t Conv64_grpdesc_flags_buf_t 484de777a60Sab #define Conv_seg_flags_buf_t Conv64_seg_flags_buf_t 485de777a60Sab #define Conv_dyn_posflag1_buf_t Conv64_dyn_posflag1_buf_t 486de777a60Sab #define Conv_dyn_flag_buf_t Conv64_dyn_flag_buf_t 487de777a60Sab #define Conv_dyn_flag1_buf_t Conv64_dyn_flag1_buf_t 488de777a60Sab #define Conv_dyn_feature1_buf_t Conv64_dyn_feature1_buf_t 489de777a60Sab #define Conv_bnd_type_buf_t Conv64_bnd_type_buf_t 490de777a60Sab #define Conv_bnd_obj_buf_t Conv64_bnd_obj_buf_t 491de777a60Sab #define Conv_phdr_flags_buf_t Conv64_phdr_flags_buf_t 492de777a60Sab #define Conv_sec_flags_buf_t Conv64_sec_flags_buf_t 493de777a60Sab #define Conv_dwarf_ehe_buf_t Conv64_dwarf_ehe_buf_t 494*d29b2c44Sab #define Conv_syminfo_flags_buf_t Conv64_syminfo_flags_buf_t 4955aefb655Srie #else 496de777a60Sab #define CONV_INV_BUFSIZE CONV32_INV_BUFSIZE 497de777a60Sab #define CONV_EHDR_FLAGS_BUFSIZE CONV32_EHDR_FLAGS_BUFSIZE 498de777a60Sab #define CONV_DYN_POSFLAG1_BUFSIZE CONV32_DYN_POSFLAG1_BUFSIZE 499de777a60Sab #define CONV_DYN_FLAG_BUFSIZE CONV32_DYN_FLAG_BUFSIZE 500de777a60Sab #define CONV_DYN_FLAG1_BUFSIZE CONV32_DYN_FLAG1_BUFSIZE 501de777a60Sab #define CONV_DYN_FEATURE1_BUFSIZE CONV32_DYN_FEATURE1_BUFSIZE 502de777a60Sab #define CONV_BND_TYPE_BUFSIZE CONV32_BND_TYPE_BUFSIZE 503de777a60Sab #define CONV_BND_OBJ_BUFSIZE CONV32_BND_OBJ_BUFSIZE 504de777a60Sab #define CONV_PHDR_FLAGS_BUFSIZE CONV32_PHDR_FLAGS_BUFSIZE 505de777a60Sab #define CONV_SEC_FLAGS_BUFSIZE CONV32_SEC_FLAGS_BUFSIZE 506*d29b2c44Sab #define CONV_SYMINFO_FLAGS_BUFSIZE CONV32_SYMINFO_FLAGS_BUFSIZE 507de777a60Sab 508de777a60Sab #define Conv_inv_buf_t Conv32_inv_buf_t 509de777a60Sab #define Conv_ehdr_flags_buf_t Conv32_ehdr_flags_buf_t 510de777a60Sab #define Conv_reject_desc_buf_t Conv32_reject_desc_buf_t 511de777a60Sab #define Conv_cap_val_hw1_buf_t Conv32_cap_val_hw1_buf_t 512de777a60Sab #define Conv_cap_val_sf1_buf_t Conv32_cap_val_sf1_buf_t 513de777a60Sab #define Conv_cap_val_buf_t Conv32_cap_val_buf_t 514de777a60Sab #define Conv_config_feat_buf_t Conv32_config_feat_buf_t 515de777a60Sab #define Conv_config_obj_buf_t Conv32_config_obj_buf_t 516de777a60Sab #define Conv_dl_mode_buf_t Conv32_dl_mode_buf_t 517de777a60Sab #define Conv_dl_flag_buf_t Conv32_dl_flag_buf_t 518de777a60Sab #define Conv_grphdl_flags_buf_t Conv32_grphdl_flags_buf_t 519de777a60Sab #define Conv_grpdesc_flags_buf_t Conv32_grpdesc_flags_buf_t 520de777a60Sab #define Conv_seg_flags_buf_t Conv32_seg_flags_buf_t 521de777a60Sab #define Conv_dyn_posflag1_buf_t Conv32_dyn_posflag1_buf_t 522de777a60Sab #define Conv_dyn_flag_buf_t Conv32_dyn_flag_buf_t 523de777a60Sab #define Conv_dyn_flag1_buf_t Conv32_dyn_flag1_buf_t 524de777a60Sab #define Conv_dyn_feature1_buf_t Conv32_dyn_feature1_buf_t 525de777a60Sab #define Conv_bnd_type_buf_t Conv32_bnd_type_buf_t 526de777a60Sab #define Conv_bnd_obj_buf_t Conv32_bnd_obj_buf_t 527de777a60Sab #define Conv_phdr_flags_buf_t Conv32_phdr_flags_buf_t 528de777a60Sab #define Conv_sec_flags_buf_t Conv32_sec_flags_buf_t 529de777a60Sab #define Conv_dwarf_ehe_buf_t Conv32_dwarf_ehe_buf_t 530*d29b2c44Sab #define Conv_syminfo_flags_buf_t Conv32_syminfo_flags_buf_t 5315aefb655Srie #endif 5325aefb655Srie 533de777a60Sab 534de777a60Sab 5352926dd2eSrie 536*d29b2c44Sab /* 537*d29b2c44Sab * Many conversion routines accept a fmt_flags argument of this type 538*d29b2c44Sab * to allow the caller to modify the output. There are two parts to 539*d29b2c44Sab * this value: 540*d29b2c44Sab * 541*d29b2c44Sab * (1) Format requests (decimal vs hex, etc...) 542*d29b2c44Sab * (2) The low order bits specified by CONV_MASK_FMT_ALT 543*d29b2c44Sab * and retrieved by CONV_TYPE_FMT_ALT are integer 544*d29b2c44Sab * values that specify that an alternate set of 545*d29b2c44Sab * strings should be used. This is necessary because 546*d29b2c44Sab * different utilities evolved to use different strings, 547*d29b2c44Sab * and there are backward compatability guarantees in 548*d29b2c44Sab * place that prevent changing them. 549*d29b2c44Sab * 550*d29b2c44Sab * These values are designed such that a caller can always supply a 551*d29b2c44Sab * simple 0 in order to receive "default" behavior. 552*d29b2c44Sab */ 553*d29b2c44Sab typedef int Conv_fmt_flags_t; 554*d29b2c44Sab 555*d29b2c44Sab /* 556*d29b2c44Sab * The bottom 8 bits of Conv_fmt_flags_t are used to encode 557*d29b2c44Sab * alternative strings. 558*d29b2c44Sab * 559*d29b2c44Sab * If a given conversion routine does not support alternative strings 560*d29b2c44Sab * for a given CONV_FMT_ALT type, it silently ignores the request and 561*d29b2c44Sab * supplies the default set. This means that a utility like dump(1) is 562*d29b2c44Sab * free to specify its special type in every conversion routine call, 563*d29b2c44Sab * without regard to whether it has any special meaning for that particular 564*d29b2c44Sab * routine. It will receive its special strings if there are any, and 565*d29b2c44Sab * the defaults otherwise. 566*d29b2c44Sab */ 567*d29b2c44Sab #define CONV_MASK_FMT_ALT 0xff 568*d29b2c44Sab #define CONV_TYPE_FMT_ALT(fmt_flags) (fmt_flags & CONV_MASK_FMT_ALT) 569*d29b2c44Sab 570*d29b2c44Sab #define CONV_FMT_ALT_DEFAULT 0 /* "Standard" strings */ 571*d29b2c44Sab #define CONV_FMT_ALT_DUMP 1 /* Style of strings used by dump(1) */ 572*d29b2c44Sab #define CONV_FMT_ALT_FILE 2 /* Style of strings used by file(1) */ 573*d29b2c44Sab #define CONV_FMT_ALT_CRLE 3 /* Style of strings used by crle(1) */ 574*d29b2c44Sab #define CONV_FMT_ALT_FULLNAME 4 /* Strings should be full #define */ 575*d29b2c44Sab /* (e.g. STB_LOCAL, not LOCL) */ 576*d29b2c44Sab 5775aefb655Srie /* 578c13de8f6Sab * Flags that alter standard formatting for conversion routines. 579*d29b2c44Sab * These bits start after the range occupied by CONV_MASK_FMT_ALT. 5805aefb655Srie */ 581*d29b2c44Sab #define CONV_FMT_DECIMAL 0x0100 /* conv_invalid_val() should print */ 582c13de8f6Sab /* integer print as decimal */ 583c13de8f6Sab /* (default is hex) */ 584*d29b2c44Sab #define CONV_FMT_SPACE 0x0200 /* conv_invalid_val() should append */ 585c13de8f6Sab /* a space after the number. */ 586*d29b2c44Sab #define CONV_FMT_NOBKT 0x0400 /* conv_expn_field() should omit */ 587*d29b2c44Sab /* prefix and suffix strings */ 588c13de8f6Sab 5895aefb655Srie 5905aefb655Srie /* 5915aefb655Srie * The expansion of bit-field data items is driven from a value descriptor and 5925aefb655Srie * the conv_expn_field() routine. 5935aefb655Srie */ 5945aefb655Srie typedef struct { 5955aefb655Srie Xword v_val; /* expansion value */ 5965aefb655Srie const char *v_msg; /* associated message string */ 5975aefb655Srie } Val_desc; 5985aefb655Srie 599ba4e3c84Sab /* 600ba4e3c84Sab * conv_expn_field() is willing to supply default strings for the 601ba4e3c84Sab * prefix, separator, and suffix arguments, if they are passed as NULL. 602ba4e3c84Sab * The caller needs to know how much room to allow for these items. 603ba4e3c84Sab * These values supply those sizes. 604ba4e3c84Sab */ 605ba4e3c84Sab #define CONV_EXPN_FIELD_DEF_PREFIX_SIZE 2 /* Default is "[ " */ 606ba4e3c84Sab #define CONV_EXPN_FIELD_DEF_SEP_SIZE 1 /* Default is " " */ 607ba4e3c84Sab #define CONV_EXPN_FIELD_DEF_SUFFIX_SIZE 2 /* Default is " ]" */ 608ba4e3c84Sab 609ba4e3c84Sab /* 610ba4e3c84Sab * conv_expn_field() requires a large number of inputs, many of which 611ba4e3c84Sab * can be NULL to accept default behavior. An argument of the following 612ba4e3c84Sab * type is used to supply them. 613ba4e3c84Sab */ 614ba4e3c84Sab typedef struct { 615ba4e3c84Sab char *buf; /* Buffer to receive generated string */ 616ba4e3c84Sab size_t bufsize; /* sizeof(buf) */ 617ba4e3c84Sab const Val_desc *vdp; /* Array of value descriptors, giving the */ 618ba4e3c84Sab /* possible bit values, and their */ 619ba4e3c84Sab /* corresponding strings. Note that the */ 620ba4e3c84Sab /* final element must contain only NULL */ 621ba4e3c84Sab /* values. This terminates the list. */ 622ba4e3c84Sab const char **lead_str; /* NULL, or array of pointers to strings to */ 623ba4e3c84Sab /* be output at the head of the list. */ 624ba4e3c84Sab /* Last entry must be NULL. */ 625ba4e3c84Sab Xword oflags; /* Bits for which output strings are desired */ 626ba4e3c84Sab Xword rflags; /* Bits for which a numeric value should be */ 627ba4e3c84Sab /* output if vdp does not provide str. */ 628ba4e3c84Sab /* Must be a proper subset of oflags */ 629ba4e3c84Sab const char *prefix; /* NULL, or string to prefix output with */ 630ba4e3c84Sab /* If NULL, "[ " is used. */ 631ba4e3c84Sab const char *sep; /* NULL, or string to separate output items */ 632ba4e3c84Sab /* with. If NULL, " " is used. */ 633ba4e3c84Sab const char *suffix; /* NULL, or string to suffix output with */ 634ba4e3c84Sab /* If NULL, " ]" is used. */ 635ba4e3c84Sab } CONV_EXPN_FIELD_ARG; 636ba4e3c84Sab 6375aefb655Srie /* 6385aefb655Srie * Define all generic interfaces. 6397c478bd9Sstevel@tonic-gate */ 6407010c12aSrie extern uchar_t conv_check_native(char **, char **); 641de777a60Sab extern const char *conv_config_feat(int, Conv_config_feat_buf_t *); 642de777a60Sab extern const char *conv_config_obj(ushort_t, Conv_config_obj_buf_t *); 6435aefb655Srie extern const char *conv_config_upm(const char *, const char *, 6445aefb655Srie const char *, size_t); 645de777a60Sab extern const char *conv_def_tag(Symref, Conv_inv_buf_t *); 6465aefb655Srie extern const char *conv_demangle_name(const char *); 647*d29b2c44Sab extern const char *conv_dl_flag(int, Conv_fmt_flags_t, 648*d29b2c44Sab Conv_dl_flag_buf_t *); 649de777a60Sab extern const char *conv_dl_mode(int, int, Conv_dl_mode_buf_t *); 650de777a60Sab extern const char *conv_dwarf_ehe(uint_t, Conv_dwarf_ehe_buf_t *); 651de777a60Sab extern const char *conv_elfdata_type(Elf_Type, Conv_inv_buf_t *); 652de777a60Sab extern const char *conv_grphdl_flags(uint_t, Conv_grphdl_flags_buf_t *); 653de777a60Sab extern const char *conv_grpdesc_flags(uint_t, Conv_grpdesc_flags_buf_t *); 6547c478bd9Sstevel@tonic-gate extern Isa_desc *conv_isalist(void); 6557c478bd9Sstevel@tonic-gate extern const char *conv_lddstub(int); 656de777a60Sab extern const char *conv_seg_flags(Half, Conv_seg_flags_buf_t *); 6577c478bd9Sstevel@tonic-gate extern int conv_sys_eclass(); 6587c478bd9Sstevel@tonic-gate extern Uts_desc *conv_uts(void); 6595aefb655Srie extern const char *conv_ver_flags(Half); 660de777a60Sab extern const char *conv_ver_index(Versym, int, Conv_inv_buf_t *); 661de777a60Sab 6625aefb655Srie 6635aefb655Srie /* 6645aefb655Srie * Define all class specific routines. 6655aefb655Srie */ 6665aefb655Srie #if defined(_ELF64) 6675aefb655Srie #define conv_bnd_obj conv64_bnd_obj 6685aefb655Srie #define conv_bnd_type conv64_bnd_type 6695aefb655Srie #define conv_cap_tag conv64_cap_tag 6705aefb655Srie #define conv_cap_val conv64_cap_val 6715aefb655Srie #define conv_cap_val_hw1 conv64_cap_val_hw1 6725aefb655Srie #define conv_cap_val_sf1 conv64_cap_val_sf1 6735aefb655Srie #define conv_dyn_feature1 conv64_dyn_feature1 6745aefb655Srie #define conv_dyn_flag1 conv64_dyn_flag1 6755aefb655Srie #define conv_dyn_flag conv64_dyn_flag 6765aefb655Srie #define conv_dyn_posflag1 conv64_dyn_posflag1 6775aefb655Srie #define conv_dyn_tag conv64_dyn_tag 6785aefb655Srie #define conv_ehdr_class conv64_ehdr_class 6795aefb655Srie #define conv_ehdr_data conv64_ehdr_data 6805aefb655Srie #define conv_ehdr_flags conv64_ehdr_flags 6815aefb655Srie #define conv_ehdr_mach conv64_ehdr_mach 6823244bcaaSab #define conv_ehdr_osabi conv64_ehdr_osabi 6835aefb655Srie #define conv_ehdr_type conv64_ehdr_type 6845aefb655Srie #define conv_ehdr_vers conv64_ehdr_vers 6855aefb655Srie #define conv_expn_field conv64_expn_field 6865aefb655Srie #define conv_invalid_val conv64_invalid_val 6875aefb655Srie #define conv_phdr_flags conv64_phdr_flags 6885aefb655Srie #define conv_phdr_type conv64_phdr_type 6895aefb655Srie #define conv_reject_desc conv64_reject_desc 6905aefb655Srie #define conv_reloc_type conv64_reloc_type 691de777a60Sab #define conv_reloc_type_static conv64_reloc_type_static 6925aefb655Srie #define conv_reloc_386_type conv64_reloc_386_type 6935aefb655Srie #define conv_reloc_amd64_type conv64_reloc_amd64_type 6945aefb655Srie #define conv_reloc_SPARC_type conv64_reloc_SPARC_type 6955aefb655Srie #define conv_sec_flags conv64_sec_flags 6967010c12aSrie #define conv_sec_linkinfo conv64_sec_linkinfo 6975aefb655Srie #define conv_sec_type conv64_sec_type 6985aefb655Srie #define conv_sym_info_bind conv64_sym_info_bind 6995aefb655Srie #define conv_sym_info_type conv64_sym_info_type 7005aefb655Srie #define conv_sym_shndx conv64_sym_shndx 7015aefb655Srie #define conv_sym_other conv64_sym_other 702*d29b2c44Sab #define conv_sym_other_vis conv64_sym_other_vis 7035aefb655Srie #define conv_sym_value conv64_sym_value 7045aefb655Srie #define conv_sym_SPARC_value conv64_sym_SPARC_value 705*d29b2c44Sab #define conv_syminfo_flags conv64_syminfo_flags 7065aefb655Srie #else 7075aefb655Srie #define conv_bnd_obj conv32_bnd_obj 7085aefb655Srie #define conv_bnd_type conv32_bnd_type 7095aefb655Srie #define conv_cap_tag conv32_cap_tag 7105aefb655Srie #define conv_cap_val conv32_cap_val 7115aefb655Srie #define conv_cap_val_hw1 conv32_cap_val_hw1 7125aefb655Srie #define conv_cap_val_sf1 conv32_cap_val_sf1 7135aefb655Srie #define conv_dyn_feature1 conv32_dyn_feature1 7145aefb655Srie #define conv_dyn_flag1 conv32_dyn_flag1 7155aefb655Srie #define conv_dyn_flag conv32_dyn_flag 7165aefb655Srie #define conv_dyn_posflag1 conv32_dyn_posflag1 7175aefb655Srie #define conv_dyn_tag conv32_dyn_tag 7185aefb655Srie #define conv_ehdr_class conv32_ehdr_class 7195aefb655Srie #define conv_ehdr_data conv32_ehdr_data 7205aefb655Srie #define conv_ehdr_flags conv32_ehdr_flags 7215aefb655Srie #define conv_ehdr_mach conv32_ehdr_mach 7223244bcaaSab #define conv_ehdr_osabi conv32_ehdr_osabi 7235aefb655Srie #define conv_ehdr_type conv32_ehdr_type 7245aefb655Srie #define conv_ehdr_vers conv32_ehdr_vers 7255aefb655Srie #define conv_expn_field conv32_expn_field 7265aefb655Srie #define conv_invalid_val conv32_invalid_val 7275aefb655Srie #define conv_phdr_flags conv32_phdr_flags 7285aefb655Srie #define conv_phdr_type conv32_phdr_type 7295aefb655Srie #define conv_reject_desc conv32_reject_desc 7305aefb655Srie #define conv_reloc_type conv32_reloc_type 731de777a60Sab #define conv_reloc_type_static conv32_reloc_type_static 7325aefb655Srie #define conv_reloc_386_type conv32_reloc_386_type 7335aefb655Srie #define conv_reloc_amd64_type conv32_reloc_amd64_type 7345aefb655Srie #define conv_reloc_SPARC_type conv32_reloc_SPARC_type 7355aefb655Srie #define conv_sec_flags conv32_sec_flags 7367010c12aSrie #define conv_sec_linkinfo conv32_sec_linkinfo 7375aefb655Srie #define conv_sec_type conv32_sec_type 7385aefb655Srie #define conv_sym_info_bind conv32_sym_info_bind 7395aefb655Srie #define conv_sym_info_type conv32_sym_info_type 7405aefb655Srie #define conv_sym_shndx conv32_sym_shndx 7415aefb655Srie #define conv_sym_other conv32_sym_other 742*d29b2c44Sab #define conv_sym_other_vis conv32_sym_other_vis 7435aefb655Srie #define conv_sym_value conv32_sym_value 7445aefb655Srie #define conv_sym_SPARC_value conv32_sym_SPARC_value 745*d29b2c44Sab #define conv_syminfo_flags conv32_syminfo_flags 7465aefb655Srie #endif 7475aefb655Srie 748de777a60Sab extern const char *conv_bnd_obj(uint_t, Conv_bnd_obj_buf_t *); 749de777a60Sab extern const char *conv_bnd_type(uint_t, Conv_bnd_type_buf_t *); 750de777a60Sab extern const char *conv_cap_tag(Xword, Conv_inv_buf_t *); 751de777a60Sab extern const char *conv_cap_val(Xword, Xword, Half, Conv_cap_val_buf_t *); 752*d29b2c44Sab extern const char *conv_cap_val_hw1(Xword, Half, Conv_fmt_flags_t, 753de777a60Sab Conv_cap_val_hw1_buf_t *); 754*d29b2c44Sab extern const char *conv_cap_val_sf1(Xword, Half, Conv_fmt_flags_t, 755de777a60Sab Conv_cap_val_sf1_buf_t *); 756*d29b2c44Sab extern const char *conv_dyn_flag1(Xword, Conv_fmt_flags_t, 757*d29b2c44Sab Conv_dyn_flag1_buf_t *); 758*d29b2c44Sab extern const char *conv_dyn_flag(Xword, Conv_fmt_flags_t, 759*d29b2c44Sab Conv_dyn_flag_buf_t *); 760*d29b2c44Sab extern const char *conv_dyn_posflag1(Xword, Conv_fmt_flags_t, 761de777a60Sab Conv_dyn_posflag1_buf_t *); 762*d29b2c44Sab extern const char *conv_dyn_tag(Xword, Half, Conv_fmt_flags_t, 763*d29b2c44Sab Conv_inv_buf_t *); 764*d29b2c44Sab extern const char *conv_dyn_feature1(Xword, Conv_fmt_flags_t, 765de777a60Sab Conv_dyn_feature1_buf_t *); 766*d29b2c44Sab extern const char *conv_ehdr_class(uchar_t, Conv_fmt_flags_t, 767*d29b2c44Sab Conv_inv_buf_t *); 768*d29b2c44Sab extern const char *conv_ehdr_data(uchar_t, Conv_fmt_flags_t, 769*d29b2c44Sab Conv_inv_buf_t *); 770*d29b2c44Sab extern const char *conv_ehdr_flags(Half, Word, Conv_fmt_flags_t, 771*d29b2c44Sab Conv_ehdr_flags_buf_t *); 772*d29b2c44Sab extern const char *conv_ehdr_mach(Half, Conv_fmt_flags_t, 773*d29b2c44Sab Conv_inv_buf_t *); 774*d29b2c44Sab extern const char *conv_ehdr_osabi(uchar_t, Conv_fmt_flags_t, 775*d29b2c44Sab Conv_inv_buf_t *); 776*d29b2c44Sab extern const char *conv_ehdr_type(Half, Conv_fmt_flags_t, 777*d29b2c44Sab Conv_inv_buf_t *); 778*d29b2c44Sab extern const char *conv_ehdr_vers(Word, Conv_fmt_flags_t, 779*d29b2c44Sab Conv_inv_buf_t *); 780*d29b2c44Sab extern int conv_expn_field(CONV_EXPN_FIELD_ARG *, 781*d29b2c44Sab Conv_fmt_flags_t); 782*d29b2c44Sab extern const char *conv_invalid_val(Conv_inv_buf_t *, Xword, 783*d29b2c44Sab Conv_fmt_flags_t); 784*d29b2c44Sab extern const char *conv_phdr_flags(Word, Conv_fmt_flags_t fmt_flags, 785*d29b2c44Sab Conv_phdr_flags_buf_t *); 786*d29b2c44Sab extern const char *conv_phdr_type(Half, Word, Conv_fmt_flags_t, 787*d29b2c44Sab Conv_inv_buf_t *); 788de777a60Sab extern const char *conv_reject_desc(Rej_desc *, Conv_reject_desc_buf_t *); 789*d29b2c44Sab extern const char *conv_reloc_type(Half, Word, Conv_fmt_flags_t, 790*d29b2c44Sab Conv_inv_buf_t *); 791*d29b2c44Sab extern const char *conv_reloc_type_static(Half, Word, Conv_fmt_flags_t); 792*d29b2c44Sab extern const char *conv_reloc_386_type(Word, Conv_fmt_flags_t, 793*d29b2c44Sab Conv_inv_buf_t *); 794*d29b2c44Sab extern const char *conv_reloc_amd64_type(Word, Conv_fmt_flags_t, 795*d29b2c44Sab Conv_inv_buf_t *); 796*d29b2c44Sab extern const char *conv_reloc_SPARC_type(Word, Conv_fmt_flags_t, 797*d29b2c44Sab Conv_inv_buf_t *); 798*d29b2c44Sab extern const char *conv_sec_flags(Xword, Conv_fmt_flags_t, 799*d29b2c44Sab Conv_sec_flags_buf_t *); 800de777a60Sab extern const char *conv_sec_linkinfo(Word, Xword, Conv_inv_buf_t *); 801*d29b2c44Sab extern const char *conv_sec_type(Half, Word, Conv_fmt_flags_t, 802*d29b2c44Sab Conv_inv_buf_t *); 803*d29b2c44Sab extern const char *conv_sym_info_bind(uchar_t, Conv_fmt_flags_t, 804*d29b2c44Sab Conv_inv_buf_t *); 805*d29b2c44Sab extern const char *conv_sym_info_type(Half, uchar_t, Conv_fmt_flags_t, 806de777a60Sab Conv_inv_buf_t *); 807de777a60Sab extern const char *conv_sym_shndx(Half, Conv_inv_buf_t *); 808de777a60Sab extern const char *conv_sym_other(uchar_t, Conv_inv_buf_t *); 809*d29b2c44Sab extern const char *conv_sym_other_vis(uchar_t, Conv_fmt_flags_t, 810*d29b2c44Sab Conv_inv_buf_t *); 811de777a60Sab extern const char *conv_sym_value(Half, uchar_t, Addr, Conv_inv_buf_t *); 812*d29b2c44Sab extern const char *conv_sym_SPARC_value(Addr, Conv_fmt_flags_t, 813*d29b2c44Sab Conv_inv_buf_t *); 814*d29b2c44Sab extern const char *conv_syminfo_flags(Xword flags, Conv_fmt_flags_t, 815*d29b2c44Sab Conv_syminfo_flags_buf_t *syminfo_flags_buf); 8167c478bd9Sstevel@tonic-gate 8177c478bd9Sstevel@tonic-gate #ifdef __cplusplus 8187c478bd9Sstevel@tonic-gate } 8197c478bd9Sstevel@tonic-gate #endif 8207c478bd9Sstevel@tonic-gate 8217c478bd9Sstevel@tonic-gate #endif /* _CONV_H */ 822