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