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