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 57c478bd9Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 67c478bd9Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 77c478bd9Sstevel@tonic-gate * with the License. 87c478bd9Sstevel@tonic-gate * 97c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 107c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 117c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 127c478bd9Sstevel@tonic-gate * and limitations under the License. 137c478bd9Sstevel@tonic-gate * 147c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 157c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 167c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 177c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 187c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 197c478bd9Sstevel@tonic-gate * 207c478bd9Sstevel@tonic-gate * CDDL HEADER END 217c478bd9Sstevel@tonic-gate */ 22*fb1354edSrie 237c478bd9Sstevel@tonic-gate /* 247c478bd9Sstevel@tonic-gate * Copyright 2005 Sun Microsystems, Inc. All rights reserved. 257c478bd9Sstevel@tonic-gate * Use is subject to license terms. 267c478bd9Sstevel@tonic-gate */ 277c478bd9Sstevel@tonic-gate 287c478bd9Sstevel@tonic-gate #ifndef _DEBUG_H 297c478bd9Sstevel@tonic-gate #define _DEBUG_H 307c478bd9Sstevel@tonic-gate 317c478bd9Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 327c478bd9Sstevel@tonic-gate 337c478bd9Sstevel@tonic-gate /* 347c478bd9Sstevel@tonic-gate * Global include file for linker debugging. 357c478bd9Sstevel@tonic-gate * 367c478bd9Sstevel@tonic-gate * ld(1) and ld.so carry out all diagnostic debugging calls via dlopen'ing 377c478bd9Sstevel@tonic-gate * the library liblddbg.so. Thus debugging is always enabled. The utility 387c478bd9Sstevel@tonic-gate * elfdump() is explicitly dependent upon this library. There are two 397c478bd9Sstevel@tonic-gate * categories of routines defined in this library: 407c478bd9Sstevel@tonic-gate * 417c478bd9Sstevel@tonic-gate * o Debugging routines that have specific linker knowledge, and test the 427c478bd9Sstevel@tonic-gate * class of debugging allowable before proceeding, start with the `Dbg_' 437c478bd9Sstevel@tonic-gate * prefix. 447c478bd9Sstevel@tonic-gate * 457c478bd9Sstevel@tonic-gate * o Lower level routines that provide generic ELF structure interpretation 467c478bd9Sstevel@tonic-gate * start with the `Elf_' prefix. These latter routines are the only 477c478bd9Sstevel@tonic-gate * routines used by the elfdump() utility. 487c478bd9Sstevel@tonic-gate */ 497c478bd9Sstevel@tonic-gate 507c478bd9Sstevel@tonic-gate #include <libelf.h> 517c478bd9Sstevel@tonic-gate #include <sgs.h> 527c478bd9Sstevel@tonic-gate #include <libld.h> 537c478bd9Sstevel@tonic-gate #include <rtld.h> 547c478bd9Sstevel@tonic-gate #include <machdep.h> 557c478bd9Sstevel@tonic-gate #include <gelf.h> 567c478bd9Sstevel@tonic-gate 577c478bd9Sstevel@tonic-gate #ifdef __cplusplus 587c478bd9Sstevel@tonic-gate extern "C" { 597c478bd9Sstevel@tonic-gate #endif 607c478bd9Sstevel@tonic-gate 617c478bd9Sstevel@tonic-gate /* 627c478bd9Sstevel@tonic-gate * Define any interface flags. These flags direct the debugging routine to 637c478bd9Sstevel@tonic-gate * generate different diagnostics, thus the strings themselves are maintained 647c478bd9Sstevel@tonic-gate * in this library. 657c478bd9Sstevel@tonic-gate */ 667c478bd9Sstevel@tonic-gate #define DBG_SUP_ENVIRON 1 677c478bd9Sstevel@tonic-gate #define DBG_SUP_CMDLINE 2 687c478bd9Sstevel@tonic-gate #define DBG_SUP_DEFAULT 3 697c478bd9Sstevel@tonic-gate 707c478bd9Sstevel@tonic-gate #define DBG_CONF_IGNORE 1 /* configuration processing errors */ 717c478bd9Sstevel@tonic-gate #define DBG_CONF_VERSION 2 727c478bd9Sstevel@tonic-gate #define DBG_CONF_PRCFAIL 3 737c478bd9Sstevel@tonic-gate #define DBG_CONF_CORRUPT 4 747c478bd9Sstevel@tonic-gate 757c478bd9Sstevel@tonic-gate #define DBG_ORDER_INFO_RANGE 1 /* sh_link out of range */ 767c478bd9Sstevel@tonic-gate #define DBG_ORDER_INFO_ORDER 2 /* sh_info also ordered */ 777c478bd9Sstevel@tonic-gate #define DBG_ORDER_LINK_OUTRANGE 3 /* sh_link out of range */ 787c478bd9Sstevel@tonic-gate #define DBG_ORDER_FLAGS 4 /* sh_flags do not match */ 797c478bd9Sstevel@tonic-gate #define DBG_ORDER_CYCLIC 5 /* sh_link cyclic */ 807c478bd9Sstevel@tonic-gate #define DBG_ORDER_LINK_ERROR 6 /* sh_link (one) has an error */ 817c478bd9Sstevel@tonic-gate 827c478bd9Sstevel@tonic-gate #define DBG_INIT_SORT 1 /* calling init from sorted order */ 837c478bd9Sstevel@tonic-gate #define DBG_INIT_PEND 2 /* calling pending init */ 847c478bd9Sstevel@tonic-gate #define DBG_INIT_DYN 3 /* dynamically triggered init */ 857c478bd9Sstevel@tonic-gate #define DBG_INIT_DONE 4 /* init completed */ 867c478bd9Sstevel@tonic-gate 877c478bd9Sstevel@tonic-gate #define DBG_DLSYM_DEF 0 887c478bd9Sstevel@tonic-gate #define DBG_DLSYM_NEXT 1 897c478bd9Sstevel@tonic-gate #define DBG_DLSYM_DEFAULT 2 907c478bd9Sstevel@tonic-gate #define DBG_DLSYM_SELF 3 917c478bd9Sstevel@tonic-gate #define DBG_DLSYM_PROBE 4 927c478bd9Sstevel@tonic-gate 937c478bd9Sstevel@tonic-gate #define DBG_DLCLOSE_NULL 0 947c478bd9Sstevel@tonic-gate #define DBG_DLCLOSE_IGNORE 1 957c478bd9Sstevel@tonic-gate #define DBG_DLCLOSE_RESCAN 2 967c478bd9Sstevel@tonic-gate 977c478bd9Sstevel@tonic-gate #define DBG_WAIT_INIT 1 987c478bd9Sstevel@tonic-gate #define DBG_WAIT_FINI 2 997c478bd9Sstevel@tonic-gate #define DBG_WAIT_SYMBOL 3 1007c478bd9Sstevel@tonic-gate 1017c478bd9Sstevel@tonic-gate #define DBG_SYM_REDUCE_GLOBAL 1 /* reporting global symbols to local */ 1027c478bd9Sstevel@tonic-gate #define DBG_SYM_REDUCE_RETAIN 2 /* reporting non reduced local syms */ 1037c478bd9Sstevel@tonic-gate 1047c478bd9Sstevel@tonic-gate #define DBG_DEP_CREATE 1 /* Group handle operations */ 1057c478bd9Sstevel@tonic-gate #define DBG_DEP_ADD 2 1067c478bd9Sstevel@tonic-gate #define DBG_DEP_DELETE 3 1077c478bd9Sstevel@tonic-gate #define DBG_DEP_REMOVE 4 1087c478bd9Sstevel@tonic-gate #define DBG_DEP_REMAIN 5 1097c478bd9Sstevel@tonic-gate #define DBG_DEP_ORPHAN 6 1107c478bd9Sstevel@tonic-gate #define DBG_DEP_REINST 7 1117c478bd9Sstevel@tonic-gate 1127c478bd9Sstevel@tonic-gate #define DBG_BINFO_FOUND 0x0001 /* information regarding binding */ 1137c478bd9Sstevel@tonic-gate #define DBG_BINFO_DIRECT 0x0002 /* bound directly */ 1147c478bd9Sstevel@tonic-gate #define DBG_BINFO_COPYREF 0x0004 /* bound to copy relocated reference */ 1157c478bd9Sstevel@tonic-gate #define DBG_BINFO_FILTEE 0x0008 /* bound to filtee */ 1167c478bd9Sstevel@tonic-gate #define DBG_BINFO_INTERPOSE 0x0010 /* bound to an identified interposer */ 1177c478bd9Sstevel@tonic-gate #define DBG_BINFO_PLTADDR 0x0020 /* bound to executables undefined plt */ 1187c478bd9Sstevel@tonic-gate #define DBG_BINFO_MSK 0xffff 1197c478bd9Sstevel@tonic-gate 1207c478bd9Sstevel@tonic-gate #define DBG_CAP_INITIAL 0 1217c478bd9Sstevel@tonic-gate #define DBG_CAP_IGNORE 1 1227c478bd9Sstevel@tonic-gate #define DBG_CAP_OLD 2 1237c478bd9Sstevel@tonic-gate #define DBG_CAP_NEW 3 1247c478bd9Sstevel@tonic-gate #define DBG_CAP_RESOLVED 4 1257c478bd9Sstevel@tonic-gate 1267c478bd9Sstevel@tonic-gate #define DBG_REL_START 1 1277c478bd9Sstevel@tonic-gate #define DBG_REL_FINISH 2 1287c478bd9Sstevel@tonic-gate #define DBG_REL_NONE 3 1297c478bd9Sstevel@tonic-gate 1307c478bd9Sstevel@tonic-gate /* 1317c478bd9Sstevel@tonic-gate * Define our setup entry point. 1327c478bd9Sstevel@tonic-gate */ 1337c478bd9Sstevel@tonic-gate extern uint_t Dbg_setup(const char *); 1347c478bd9Sstevel@tonic-gate extern void Dbg_set(uint_t); 1357c478bd9Sstevel@tonic-gate 1367c478bd9Sstevel@tonic-gate /* 1377c478bd9Sstevel@tonic-gate * Define a user macro to invoke debugging. The `dbg_mask' variable acts as a 1387c478bd9Sstevel@tonic-gate * suitable flag, and can be set to collect the return value from Dbg_setup(). 1397c478bd9Sstevel@tonic-gate */ 1407c478bd9Sstevel@tonic-gate extern uint_t dbg_mask; 1417c478bd9Sstevel@tonic-gate 1427c478bd9Sstevel@tonic-gate #define DBG_CALL(func) if (dbg_mask) func 1437c478bd9Sstevel@tonic-gate 1447c478bd9Sstevel@tonic-gate /* 1457c478bd9Sstevel@tonic-gate * Most debugging tokens are interpreted within liblddbg, and thus any flags 1467c478bd9Sstevel@tonic-gate * within dbg_mask are only meaningful to this library. The following flags 1477c478bd9Sstevel@tonic-gate * may be set by the Dbg_setup() by can be interpreted by the caller. 1487c478bd9Sstevel@tonic-gate */ 1497c478bd9Sstevel@tonic-gate #define DBG_G_SNAME 0x10000000 /* prepend simple name */ 1507c478bd9Sstevel@tonic-gate #define DBG_G_FNAME 0x20000000 /* prepend full name */ 1517c478bd9Sstevel@tonic-gate #define DBG_G_CLASS 0x40000000 /* prepend ELF class */ 1527c478bd9Sstevel@tonic-gate 1537c478bd9Sstevel@tonic-gate /* 1547c478bd9Sstevel@tonic-gate * Print routine, this must be supplied by the application. 1557c478bd9Sstevel@tonic-gate */ 1567c478bd9Sstevel@tonic-gate /*PRINTFLIKE1*/ 1577c478bd9Sstevel@tonic-gate extern void dbg_print(const char *, ...); 1587c478bd9Sstevel@tonic-gate 1597c478bd9Sstevel@tonic-gate 1607c478bd9Sstevel@tonic-gate /* 1617c478bd9Sstevel@tonic-gate * External interface routines. These are linker specific. 1627c478bd9Sstevel@tonic-gate */ 1637c478bd9Sstevel@tonic-gate #ifdef _ELF64 1647c478bd9Sstevel@tonic-gate #define Dbg_cap_hw_1 Dbg_cap_hw_164 1657c478bd9Sstevel@tonic-gate #define Dbg_cap_mapfile Dbg_cap_mapfile64 1667c478bd9Sstevel@tonic-gate #define Dbg_cap_sec_entry Dbg_cap_sec_entry64 1677c478bd9Sstevel@tonic-gate #define Dbg_file_analyze Dbg_file_analyze64 1687c478bd9Sstevel@tonic-gate #define Dbg_file_aout Dbg_file_aout64 1697c478bd9Sstevel@tonic-gate #define Dbg_file_archive Dbg_file_archive64 1707c478bd9Sstevel@tonic-gate #define Dbg_file_bind_entry Dbg_file_bind_entry64 171dffec89cSrie #define Dbg_file_bindings Dbg_file_bindings64 1727c478bd9Sstevel@tonic-gate #define Dbg_file_config_dis Dbg_file_config_dis64 1737c478bd9Sstevel@tonic-gate #define Dbg_file_config_obj Dbg_file_config_obj64 1747c478bd9Sstevel@tonic-gate #define Dbg_file_delete Dbg_file_delete64 1757c478bd9Sstevel@tonic-gate #define Dbg_file_dlclose Dbg_file_dlclose64 1767c478bd9Sstevel@tonic-gate #define Dbg_file_dldump Dbg_file_dldump64 1777c478bd9Sstevel@tonic-gate #define Dbg_file_dlopen Dbg_file_dlopen64 1787c478bd9Sstevel@tonic-gate #define Dbg_file_elf Dbg_file_elf64 1797c478bd9Sstevel@tonic-gate #define Dbg_file_filtee Dbg_file_filtee64 1807c478bd9Sstevel@tonic-gate #define Dbg_file_filter Dbg_file_filter64 1817c478bd9Sstevel@tonic-gate #define Dbg_file_fixname Dbg_file_fixname64 1827c478bd9Sstevel@tonic-gate #define Dbg_file_generic Dbg_file_generic64 1837c478bd9Sstevel@tonic-gate #define Dbg_file_hdl_action Dbg_file_hdl_action64 1847c478bd9Sstevel@tonic-gate #define Dbg_file_hdl_collect Dbg_file_hdl_collect64 1857c478bd9Sstevel@tonic-gate #define Dbg_file_hdl_title Dbg_file_hdl_title64 1867c478bd9Sstevel@tonic-gate #define Dbg_file_ldso Dbg_file_ldso64 1877c478bd9Sstevel@tonic-gate #define Dbg_file_lazyload Dbg_file_lazyload64 1887c478bd9Sstevel@tonic-gate #define Dbg_file_needed Dbg_file_needed64 1897c478bd9Sstevel@tonic-gate #define Dbg_file_nl Dbg_file_nl64 1907c478bd9Sstevel@tonic-gate #define Dbg_file_output Dbg_file_output64 1917c478bd9Sstevel@tonic-gate #define Dbg_file_preload Dbg_file_preload64 1927c478bd9Sstevel@tonic-gate #define Dbg_file_prot Dbg_file_prot64 1937c478bd9Sstevel@tonic-gate #define Dbg_file_reuse Dbg_file_reuse64 1947c478bd9Sstevel@tonic-gate #define Dbg_file_skip Dbg_file_skip64 1957c478bd9Sstevel@tonic-gate #define Dbg_got_display Dbg_got_display64 1967c478bd9Sstevel@tonic-gate #define Dbg_map_atsign Dbg_map_atsign64 1977c478bd9Sstevel@tonic-gate #define Dbg_map_cap Dbg_map_cap64 1987c478bd9Sstevel@tonic-gate #define Dbg_map_dash Dbg_map_dash64 1997c478bd9Sstevel@tonic-gate #define Dbg_map_ent Dbg_map_ent64 2007c478bd9Sstevel@tonic-gate #define Dbg_map_equal Dbg_map_equal64 2017c478bd9Sstevel@tonic-gate #define Dbg_map_parse Dbg_map_parse64 2027c478bd9Sstevel@tonic-gate #define Dbg_map_pipe Dbg_map_pipe64 2037c478bd9Sstevel@tonic-gate #define Dbg_map_seg Dbg_map_seg64 2047c478bd9Sstevel@tonic-gate #define Dbg_map_size_new Dbg_map_size_new64 2057c478bd9Sstevel@tonic-gate #define Dbg_map_size_old Dbg_map_size_old64 2067c478bd9Sstevel@tonic-gate #define Dbg_map_sort_fini Dbg_map_sort_fini64 2077c478bd9Sstevel@tonic-gate #define Dbg_map_sort_orig Dbg_map_sort_orig64 2087c478bd9Sstevel@tonic-gate #define Dbg_map_symbol Dbg_map_symbol64 2097c478bd9Sstevel@tonic-gate #define Dbg_map_version Dbg_map_version64 2107c478bd9Sstevel@tonic-gate #define Dbg_move_mventry Dbg_move_mventry64 2117c478bd9Sstevel@tonic-gate #define Dbg_move_mventry2 Dbg_move_mventry264 2127c478bd9Sstevel@tonic-gate #define Dbg_move_outsctadj Dbg_move_outsctadj64 2137c478bd9Sstevel@tonic-gate #define Dbg_reloc_discard Dbg_reloc_discard64 2147c478bd9Sstevel@tonic-gate #define Dbg_reloc_error Dbg_reloc_error64 2157c478bd9Sstevel@tonic-gate #define Dbg_reloc_generate Dbg_reloc_generate64 2167c478bd9Sstevel@tonic-gate #define Dbg_reloc_in Dbg_reloc_in64 2177c478bd9Sstevel@tonic-gate #define Dbg_reloc_out Dbg_reloc_out64 2187c478bd9Sstevel@tonic-gate #define Dbg_reloc_proc Dbg_reloc_proc64 2197c478bd9Sstevel@tonic-gate #define Dbg_reloc_ars_entry Dbg_reloc_ars_entry64 2207c478bd9Sstevel@tonic-gate #define Dbg_reloc_ors_entry Dbg_reloc_ors_entry64 2217c478bd9Sstevel@tonic-gate #define Dbg_reloc_doact Dbg_reloc_doact64 2227c478bd9Sstevel@tonic-gate #define Dbg_reloc_dooutrel Dbg_reloc_dooutrel64 2237c478bd9Sstevel@tonic-gate #define Dbg_reloc_reg_apply Dbg_reloc_reg_apply64 2247c478bd9Sstevel@tonic-gate #define Dbg_reloc_transition Dbg_reloc_transition64 2257c478bd9Sstevel@tonic-gate #define Dbg_sec_added Dbg_sec_added64 2267c478bd9Sstevel@tonic-gate #define Dbg_sec_created Dbg_sec_created64 2277c478bd9Sstevel@tonic-gate #define Dbg_sec_discarded Dbg_sec_discarded64 2287c478bd9Sstevel@tonic-gate #define Dbg_sec_group Dbg_sec_group64 2297c478bd9Sstevel@tonic-gate #define Dbg_sec_in Dbg_sec_in64 2307c478bd9Sstevel@tonic-gate #define Dbg_sec_order_list Dbg_sec_order_list64 2317c478bd9Sstevel@tonic-gate #define Dbg_sec_order_error Dbg_sec_order_error64 2327c478bd9Sstevel@tonic-gate #define Dbg_sec_strtab Dbg_sec_strtab64 2337c478bd9Sstevel@tonic-gate #define Dbg_seg_entry Dbg_seg_entry64 2347c478bd9Sstevel@tonic-gate #define Dbg_seg_list Dbg_seg_list64 2357c478bd9Sstevel@tonic-gate #define Dbg_seg_os Dbg_seg_os64 2367c478bd9Sstevel@tonic-gate #define Dbg_seg_title Dbg_seg_title64 2377c478bd9Sstevel@tonic-gate #define Dbg_statistics_ar Dbg_statistics_ar64 2387c478bd9Sstevel@tonic-gate #define Dbg_statistics_ld Dbg_statistics_ld64 2397c478bd9Sstevel@tonic-gate #define Dbg_syminfo_entry Dbg_syminfo_entry64 2407c478bd9Sstevel@tonic-gate #define Dbg_syminfo_entry_title Dbg_syminfo_entry_title64 2417c478bd9Sstevel@tonic-gate #define Dbg_syminfo_title Dbg_syminfo_title64 2427c478bd9Sstevel@tonic-gate #define Dbg_syms_ar_checking Dbg_syms_ar_checking64 2437c478bd9Sstevel@tonic-gate #define Dbg_syms_ar_entry Dbg_syms_ar_entry64 2447c478bd9Sstevel@tonic-gate #define Dbg_syms_ar_resolve Dbg_syms_ar_resolve64 2457c478bd9Sstevel@tonic-gate #define Dbg_syms_created Dbg_syms_created64 2467c478bd9Sstevel@tonic-gate #define Dbg_syms_discarded Dbg_syms_discarded64 2477c478bd9Sstevel@tonic-gate #define Dbg_syms_entered Dbg_syms_entered64 2487c478bd9Sstevel@tonic-gate #define Dbg_syms_entry Dbg_syms_entry64 2497c478bd9Sstevel@tonic-gate #define Dbg_syms_global Dbg_syms_global64 2507c478bd9Sstevel@tonic-gate #define Dbg_syms_ignore Dbg_syms_ignore64 2517c478bd9Sstevel@tonic-gate #define Dbg_syms_new Dbg_syms_new64 2527c478bd9Sstevel@tonic-gate #define Dbg_syms_nl Dbg_syms_nl64 2537c478bd9Sstevel@tonic-gate #define Dbg_syms_old Dbg_syms_old64 2547c478bd9Sstevel@tonic-gate #define Dbg_syms_process Dbg_syms_process64 2557c478bd9Sstevel@tonic-gate #define Dbg_syms_reduce Dbg_syms_reduce64 2567c478bd9Sstevel@tonic-gate #define Dbg_syms_reloc Dbg_syms_reloc64 2577c478bd9Sstevel@tonic-gate #define Dbg_syms_resolved Dbg_syms_resolved64 2587c478bd9Sstevel@tonic-gate #define Dbg_syms_resolving1 Dbg_syms_resolving164 2597c478bd9Sstevel@tonic-gate #define Dbg_syms_resolving2 Dbg_syms_resolving264 2607c478bd9Sstevel@tonic-gate #define Dbg_syms_sec_entry Dbg_syms_sec_entry64 2617c478bd9Sstevel@tonic-gate #define Dbg_syms_sec_title Dbg_syms_sec_title64 2627c478bd9Sstevel@tonic-gate #define Dbg_syms_spec_title Dbg_syms_spec_title64 2637c478bd9Sstevel@tonic-gate #define Dbg_syms_up_title Dbg_syms_up_title64 2647c478bd9Sstevel@tonic-gate #define Dbg_syms_updated Dbg_syms_updated64 2657c478bd9Sstevel@tonic-gate #define Dbg_syms_dlsym Dbg_syms_dlsym64 2667c478bd9Sstevel@tonic-gate #define Dbg_syms_lookup_aout Dbg_syms_lookup_aout64 2677c478bd9Sstevel@tonic-gate #define Dbg_syms_lookup Dbg_syms_lookup64 2687c478bd9Sstevel@tonic-gate #define Dbg_tls_modactivity Dbg_tls_modactivity64 2697c478bd9Sstevel@tonic-gate #define Dbg_tls_static_block Dbg_tls_static_block64 2707c478bd9Sstevel@tonic-gate #define Dbg_unused_sec Dbg_unused_sec64 2717c478bd9Sstevel@tonic-gate #define Dbg_audit_interface Dbg_audit_interface64 2727c478bd9Sstevel@tonic-gate #define Dbg_audit_lib Dbg_audit_lib64 2737c478bd9Sstevel@tonic-gate #define Dbg_audit_object Dbg_audit_object64 2747c478bd9Sstevel@tonic-gate #define Dbg_audit_symval Dbg_audit_symval64 2757c478bd9Sstevel@tonic-gate #define Dbg_audit_version Dbg_audit_version64 2767c478bd9Sstevel@tonic-gate #define Dbg_ver_avail_entry Dbg_ver_avail_entry64 2777c478bd9Sstevel@tonic-gate #define Dbg_ver_desc_entry Dbg_ver_desc_entry64 2787c478bd9Sstevel@tonic-gate #endif /* _ELF64 */ 2797c478bd9Sstevel@tonic-gate 2807c478bd9Sstevel@tonic-gate extern void Dbg_args_files(int, char *); 2817c478bd9Sstevel@tonic-gate extern void Dbg_args_flags(int, int); 2827c478bd9Sstevel@tonic-gate extern void Dbg_bind_global(const char *, caddr_t, caddr_t, Xword, 2837c478bd9Sstevel@tonic-gate Pltbindtype, const char *, caddr_t, caddr_t, 2847c478bd9Sstevel@tonic-gate const char *, uint_t); 2857c478bd9Sstevel@tonic-gate extern void Dbg_bind_plt_summary(Half, Word, Word, Word, 2867c478bd9Sstevel@tonic-gate Word, Word, Word); 2877c478bd9Sstevel@tonic-gate extern void Dbg_bind_profile(uint_t, uint_t); 2887c478bd9Sstevel@tonic-gate extern void Dbg_bind_weak(const char *, caddr_t, caddr_t, 2897c478bd9Sstevel@tonic-gate const char *); 2907c478bd9Sstevel@tonic-gate extern void Dbg_cap_hw_candidate(const char *); 2917c478bd9Sstevel@tonic-gate extern void Dbg_cap_hw_filter(const char *, const char *); 2927c478bd9Sstevel@tonic-gate extern void Dbg_cap_hw_1(Xword, Half); 2937c478bd9Sstevel@tonic-gate extern void Dbg_cap_mapfile(Xword, Xword, Half); 2947c478bd9Sstevel@tonic-gate extern void Dbg_cap_sec_entry(uint_t, Xword, Xword, Half); 2957c478bd9Sstevel@tonic-gate extern void Dbg_cap_sec_title(const char *); 2967c478bd9Sstevel@tonic-gate extern void Dbg_ent_print(Half, List * len, Boolean); 2977c478bd9Sstevel@tonic-gate extern void Dbg_file_analyze(Rt_map *); 2987c478bd9Sstevel@tonic-gate extern void Dbg_file_aout(const char *, ulong_t, ulong_t, ulong_t); 2997c478bd9Sstevel@tonic-gate extern void Dbg_file_archive(const char *, int); 3007c478bd9Sstevel@tonic-gate extern void Dbg_file_ar_rescan(void); 3017c478bd9Sstevel@tonic-gate extern void Dbg_file_bind_entry(Bnd_desc *); 302dffec89cSrie extern void Dbg_file_bindings(Rt_map *, int, Word); 3037c478bd9Sstevel@tonic-gate extern void Dbg_file_cntl(Lm_list *, Aliste, Aliste); 3047c478bd9Sstevel@tonic-gate extern void Dbg_file_config_dis(const char *, int); 3057c478bd9Sstevel@tonic-gate extern void Dbg_file_config_obj(const char *, const char *, 3067c478bd9Sstevel@tonic-gate const char *); 3077c478bd9Sstevel@tonic-gate extern void Dbg_file_delete(const char *); 3087c478bd9Sstevel@tonic-gate extern void Dbg_file_dlclose(const char *, int); 3097c478bd9Sstevel@tonic-gate extern void Dbg_file_dldump(const char *, const char *, int); 3107c478bd9Sstevel@tonic-gate extern void Dbg_file_dlopen(const char *, const char *, int); 3117c478bd9Sstevel@tonic-gate extern void Dbg_file_del_rescan(void); 3127c478bd9Sstevel@tonic-gate extern void Dbg_file_elf(const char *, ulong_t, ulong_t, ulong_t, 3137c478bd9Sstevel@tonic-gate ulong_t, Lmid_t, Aliste); 3147c478bd9Sstevel@tonic-gate extern void Dbg_file_filtee(const char *, const char *, int); 3157c478bd9Sstevel@tonic-gate extern void Dbg_file_filter(const char *, const char *, int); 3167c478bd9Sstevel@tonic-gate extern void Dbg_file_fixname(const char *, const char *); 3177c478bd9Sstevel@tonic-gate extern void Dbg_file_generic(Ifl_desc *); 3187c478bd9Sstevel@tonic-gate extern void Dbg_file_hdl_action(Grp_hdl *, Rt_map *, int); 3197c478bd9Sstevel@tonic-gate extern void Dbg_file_hdl_collect(Grp_hdl *, const char *); 3207c478bd9Sstevel@tonic-gate extern void Dbg_file_hdl_title(int); 3217c478bd9Sstevel@tonic-gate extern void Dbg_file_lazyload(const char *, const char *, 3227c478bd9Sstevel@tonic-gate const char *); 32341072f3cSrie extern void Dbg_file_ldso(const char *, ulong_t, ulong_t, char **, 32441072f3cSrie auxv_t *); 3257c478bd9Sstevel@tonic-gate extern void Dbg_file_mode_promote(const char *, int); 3267c478bd9Sstevel@tonic-gate extern void Dbg_file_needed(const char *, const char *); 3277c478bd9Sstevel@tonic-gate extern void Dbg_file_nl(void); 3287c478bd9Sstevel@tonic-gate extern void Dbg_file_output(Ofl_desc *); 3297c478bd9Sstevel@tonic-gate extern void Dbg_file_preload(const char *); 3307c478bd9Sstevel@tonic-gate extern void Dbg_file_prot(const char *, int); 3317c478bd9Sstevel@tonic-gate extern void Dbg_file_reuse(const char *, const char *); 3327c478bd9Sstevel@tonic-gate extern void Dbg_file_rejected(Rej_desc *); 3337c478bd9Sstevel@tonic-gate extern void Dbg_file_skip(const char *, const char *); 3347c478bd9Sstevel@tonic-gate extern void Dbg_got_display(Gottable *, Ofl_desc *); 3357c478bd9Sstevel@tonic-gate extern void Dbg_libs_audit(const char *, const char *); 3367c478bd9Sstevel@tonic-gate extern void Dbg_libs_ignore(const char *); 3377c478bd9Sstevel@tonic-gate extern void Dbg_libs_init(List *, List *); 3387c478bd9Sstevel@tonic-gate extern void Dbg_libs_l(const char *, const char *); 3397c478bd9Sstevel@tonic-gate extern void Dbg_libs_path(const char *, Half, const char *); 3407c478bd9Sstevel@tonic-gate extern void Dbg_libs_req(const char *, const char *, const char *); 3417c478bd9Sstevel@tonic-gate extern void Dbg_libs_update(List *, List *); 3427c478bd9Sstevel@tonic-gate extern void Dbg_libs_yp(const char *); 3437c478bd9Sstevel@tonic-gate extern void Dbg_libs_ylu(const char *, const char *, int); 3447c478bd9Sstevel@tonic-gate extern void Dbg_libs_find(const char *); 3457c478bd9Sstevel@tonic-gate extern void Dbg_libs_found(const char *, int); 3467c478bd9Sstevel@tonic-gate extern void Dbg_map_atsign(Boolean); 3477c478bd9Sstevel@tonic-gate extern void Dbg_map_dash(const char *, Sdf_desc *); 3487c478bd9Sstevel@tonic-gate extern void Dbg_map_ent(Boolean, Ent_desc *, Ofl_desc *); 3497c478bd9Sstevel@tonic-gate extern void Dbg_map_equal(Boolean); 3507c478bd9Sstevel@tonic-gate extern void Dbg_map_parse(const char *); 3517c478bd9Sstevel@tonic-gate extern void Dbg_map_pipe(Sg_desc *, const char *, const Word); 3527c478bd9Sstevel@tonic-gate extern void Dbg_map_seg(Half, int, Sg_desc *); 3537c478bd9Sstevel@tonic-gate extern void Dbg_map_size_new(const char *); 3547c478bd9Sstevel@tonic-gate extern void Dbg_map_size_old(Ehdr *, Sym_desc *); 3557c478bd9Sstevel@tonic-gate extern void Dbg_map_sort_fini(Sg_desc *); 3567c478bd9Sstevel@tonic-gate extern void Dbg_map_sort_orig(Sg_desc *); 3577c478bd9Sstevel@tonic-gate extern void Dbg_map_symbol(Ehdr *, Sym_desc *); 3587c478bd9Sstevel@tonic-gate extern void Dbg_map_version(const char *, const char *, int); 3597c478bd9Sstevel@tonic-gate extern void Dbg_move_adjexpandreloc(ulong_t, const char *); 3607c478bd9Sstevel@tonic-gate extern void Dbg_move_adjmovereloc(ulong_t, ulong_t, const char *); 3617c478bd9Sstevel@tonic-gate extern void Dbg_move_data(const char *); 3627c478bd9Sstevel@tonic-gate extern void Dbg_move_expanding(Move *, Addr); 3637c478bd9Sstevel@tonic-gate extern void Dbg_move_input1(const char *); 3647c478bd9Sstevel@tonic-gate extern void Dbg_move_mventry(int, Move *, Sym_desc *); 3657c478bd9Sstevel@tonic-gate extern void Dbg_move_mventry2(Move *, Word, char *); 3667c478bd9Sstevel@tonic-gate extern void Dbg_move_outmove(const uchar_t *); 3677c478bd9Sstevel@tonic-gate extern void Dbg_move_outsctadj(Sym_desc *); 3687c478bd9Sstevel@tonic-gate extern void Dbg_move_parexpn(const char *, const char *); 3697c478bd9Sstevel@tonic-gate #if defined(_ELF64) 3707c478bd9Sstevel@tonic-gate extern void Dbg_pltpad_bindto64(const char *, const char *, Addr); 3717c478bd9Sstevel@tonic-gate extern void Dbg_pltpad_boundto64(const char *, Addr, const char *, 3727c478bd9Sstevel@tonic-gate const char *); 3737c478bd9Sstevel@tonic-gate #endif 3747c478bd9Sstevel@tonic-gate extern void Dbg_reloc_apply(unsigned long long, unsigned long long); 3757c478bd9Sstevel@tonic-gate extern void Dbg_reloc_discard(Half, Rel_desc *); 3767c478bd9Sstevel@tonic-gate extern void Dbg_reloc_error(Half, Word, void *, const char *, 3777c478bd9Sstevel@tonic-gate const char *); 3787c478bd9Sstevel@tonic-gate extern void Dbg_reloc_generate(Os_desc *, Word); 3797c478bd9Sstevel@tonic-gate extern void Dbg_reloc_reg_apply(unsigned long long, 3807c478bd9Sstevel@tonic-gate unsigned long long); 3817c478bd9Sstevel@tonic-gate extern void Dbg_reloc_in(Half, Word, void *, const char *, 3827c478bd9Sstevel@tonic-gate const char *); 3837c478bd9Sstevel@tonic-gate extern void Dbg_reloc_out(Half, Word, void *, const char *, 3847c478bd9Sstevel@tonic-gate const char *); 3857c478bd9Sstevel@tonic-gate extern void Dbg_reloc_proc(Os_desc *, Is_desc *, Is_desc *); 3867c478bd9Sstevel@tonic-gate extern void Dbg_reloc_ars_entry(Half, Rel_desc *); 3877c478bd9Sstevel@tonic-gate extern void Dbg_reloc_ors_entry(Half, Rel_desc *); 3887c478bd9Sstevel@tonic-gate extern void Dbg_reloc_doactiverel(void); 3897c478bd9Sstevel@tonic-gate extern void Dbg_reloc_doact(Half, Word, Xword, Xword, const char *, 3907c478bd9Sstevel@tonic-gate Os_desc *); 3917c478bd9Sstevel@tonic-gate extern void Dbg_reloc_dooutrel(GElf_Word); 3927c478bd9Sstevel@tonic-gate extern void Dbg_reloc_copy(const char *, const char *, 3937c478bd9Sstevel@tonic-gate const char *, int); 3947c478bd9Sstevel@tonic-gate extern void Dbg_reloc_run(const char *, uint_t, int, int); 3957c478bd9Sstevel@tonic-gate extern void Dbg_reloc_transition(Half, Word, Word, Xword, 3967c478bd9Sstevel@tonic-gate const char *); 3977c478bd9Sstevel@tonic-gate extern void Dbg_sec_added(Os_desc *, Sg_desc *); 3987c478bd9Sstevel@tonic-gate extern void Dbg_sec_created(Os_desc *, Sg_desc *); 3997c478bd9Sstevel@tonic-gate extern void Dbg_sec_discarded(Is_desc *, Is_desc *); 400cc7efc4fSrie extern void Dbg_sec_group(Is_desc *, Group_desc *); 4017c478bd9Sstevel@tonic-gate extern void Dbg_sec_in(Is_desc *); 4027c478bd9Sstevel@tonic-gate extern void Dbg_sec_order_list(Ofl_desc *, int); 4037c478bd9Sstevel@tonic-gate extern void Dbg_sec_order_error(Ifl_desc *, Word, int); 4047c478bd9Sstevel@tonic-gate extern void Dbg_sec_strtab(Os_desc *, Str_tbl *); 4057c478bd9Sstevel@tonic-gate extern void Dbg_seg_entry(Half, int, Sg_desc *); 4067c478bd9Sstevel@tonic-gate extern void Dbg_seg_list(Half, List *); 4077c478bd9Sstevel@tonic-gate extern void Dbg_seg_os(Ofl_desc *, Os_desc *, int); 4087c478bd9Sstevel@tonic-gate extern void Dbg_seg_title(void); 4097c478bd9Sstevel@tonic-gate extern void Dbg_support_action(const char *, const char *, 4107c478bd9Sstevel@tonic-gate Support_ndx, const char *); 4117c478bd9Sstevel@tonic-gate extern void Dbg_support_load(const char *, const char *); 4127c478bd9Sstevel@tonic-gate extern void Dbg_support_req(const char *, int); 4137c478bd9Sstevel@tonic-gate extern void Dbg_syms_ar_checking(Xword, Elf_Arsym *, const char *); 4147c478bd9Sstevel@tonic-gate extern void Dbg_syms_ar_entry(Xword, Elf_Arsym *); 4157c478bd9Sstevel@tonic-gate extern void Dbg_syms_ar_resolve(Xword, Elf_Arsym *, const char *, 4167c478bd9Sstevel@tonic-gate int); 4177c478bd9Sstevel@tonic-gate extern void Dbg_syms_ar_title(const char *, int); 4187c478bd9Sstevel@tonic-gate extern void Dbg_syms_created(const char *); 4197c478bd9Sstevel@tonic-gate extern void Dbg_syms_discarded(Sym_desc *, Is_desc *); 4207c478bd9Sstevel@tonic-gate extern void Dbg_syms_entered(Ehdr *, Sym *, Sym_desc *); 4217c478bd9Sstevel@tonic-gate extern void Dbg_syms_entry(Xword, Sym_desc *); 4227c478bd9Sstevel@tonic-gate extern void Dbg_syms_global(Xword, const char *); 4237c478bd9Sstevel@tonic-gate extern void Dbg_syms_ignore(Ehdr *, Sym_desc *); 4247c478bd9Sstevel@tonic-gate extern void Dbg_syms_lazy_rescan(const char *); 4257c478bd9Sstevel@tonic-gate extern void Dbg_syms_new(Ehdr *, Sym *, Sym_desc *); 4267c478bd9Sstevel@tonic-gate extern void Dbg_syms_nl(void); 4277c478bd9Sstevel@tonic-gate extern void Dbg_syms_old(Ehdr *, Sym_desc *); 4287c478bd9Sstevel@tonic-gate extern void Dbg_syms_process(Ifl_desc *); 4297c478bd9Sstevel@tonic-gate extern void Dbg_syms_reduce(int, Ehdr *, Sym_desc *, int, 4307c478bd9Sstevel@tonic-gate const char *); 4317c478bd9Sstevel@tonic-gate extern void Dbg_syms_reloc(Ehdr *, Sym_desc *); 4327c478bd9Sstevel@tonic-gate extern void Dbg_syms_resolved(Ehdr *, Sym_desc *); 4337c478bd9Sstevel@tonic-gate extern void Dbg_syms_resolving1(Xword, const char *, int, int); 4347c478bd9Sstevel@tonic-gate extern void Dbg_syms_resolving2(Ehdr *, Sym *, Sym *, Sym_desc *, 4357c478bd9Sstevel@tonic-gate Ifl_desc *); 4367c478bd9Sstevel@tonic-gate extern void Dbg_syms_sec_entry(int, Sg_desc *, Os_desc *); 4377c478bd9Sstevel@tonic-gate extern void Dbg_syms_sec_title(void); 4387c478bd9Sstevel@tonic-gate extern void Dbg_syms_spec_title(void); 4397c478bd9Sstevel@tonic-gate extern void Dbg_syms_up_title(Ehdr *); 4407c478bd9Sstevel@tonic-gate extern void Dbg_syms_updated(Ehdr *, Sym_desc *, const char *); 4417c478bd9Sstevel@tonic-gate extern void Dbg_syms_dlsym(const char *, const char *, const char *, 4427c478bd9Sstevel@tonic-gate int); 4437c478bd9Sstevel@tonic-gate extern void Dbg_syms_lookup_aout(const char *); 4447c478bd9Sstevel@tonic-gate extern void Dbg_syms_lookup(const char *, const char *, 4457c478bd9Sstevel@tonic-gate const char *); 4467c478bd9Sstevel@tonic-gate extern void Dbg_tls_modactivity(void *, uint_t); 4477c478bd9Sstevel@tonic-gate extern void Dbg_tls_static_block(void *, ulong_t); 4487c478bd9Sstevel@tonic-gate extern void Dbg_audit_interface(const char *, const char *); 4497c478bd9Sstevel@tonic-gate extern void Dbg_audit_lib(const char *); 4507c478bd9Sstevel@tonic-gate extern void Dbg_audit_object(const char *, const char *); 4517c478bd9Sstevel@tonic-gate extern void Dbg_audit_symval(const char *, const char *, 4527c478bd9Sstevel@tonic-gate const char *, Addr, Addr); 4537c478bd9Sstevel@tonic-gate extern void Dbg_audit_version(const char *, ulong_t); 4547c478bd9Sstevel@tonic-gate extern void Dbg_statistics_ar(Ofl_desc *); 4557c478bd9Sstevel@tonic-gate extern void Dbg_statistics_ld(Ofl_desc *); 4567c478bd9Sstevel@tonic-gate extern void Dbg_syminfo_entry(int, Syminfo *, Sym *, 4577c478bd9Sstevel@tonic-gate const char *, Dyn *); 4587c478bd9Sstevel@tonic-gate extern void Dbg_syminfo_title(void); 459*fb1354edSrie extern void Dbg_unused_file(const char *, int, int); 4607c478bd9Sstevel@tonic-gate extern void Dbg_unused_rtldinfo(const char *, const char *); 4617c478bd9Sstevel@tonic-gate extern void Dbg_unused_sec(Is_desc *); 4627c478bd9Sstevel@tonic-gate extern void Dbg_unused_unref(const char *, const char *); 4637c478bd9Sstevel@tonic-gate extern void Dbg_util_broadcast(const char *); 4647c478bd9Sstevel@tonic-gate extern void Dbg_util_call_array(const char *, void *, 4657c478bd9Sstevel@tonic-gate uint_t, uint_t); 4667c478bd9Sstevel@tonic-gate extern void Dbg_util_call_fini(const char *); 4677c478bd9Sstevel@tonic-gate extern void Dbg_util_call_init(const char *, int); 4687c478bd9Sstevel@tonic-gate extern void Dbg_util_call_main(const char *); 469dffec89cSrie extern void Dbg_util_collect(const char *, int, int); 4707c478bd9Sstevel@tonic-gate extern void Dbg_util_dbnotify(rd_event_e, r_state_e); 471dffec89cSrie extern void Dbg_util_edge_in(Rt_map *, uint_t, Rt_map *, int, int); 472dffec89cSrie extern void Dbg_util_edge_out(const char *, int, const char *); 4737c478bd9Sstevel@tonic-gate extern void Dbg_util_intoolate(const char *); 4747c478bd9Sstevel@tonic-gate extern void Dbg_util_nl(void); 4757c478bd9Sstevel@tonic-gate extern void Dbg_util_no_init(const char *); 476dffec89cSrie extern void Dbg_util_scc_entry(uint_t, const char *); 477dffec89cSrie extern void Dbg_util_scc_title(int); 4787c478bd9Sstevel@tonic-gate extern void Dbg_util_str(const char *); 4797c478bd9Sstevel@tonic-gate extern void Dbg_util_wait(int, const char *, const char *); 4807c478bd9Sstevel@tonic-gate extern void Dbg_ver_avail_entry(Ver_index *, const char *); 4817c478bd9Sstevel@tonic-gate extern void Dbg_ver_avail_title(const char *); 4827c478bd9Sstevel@tonic-gate extern void Dbg_ver_desc_entry(Ver_desc *); 4837c478bd9Sstevel@tonic-gate extern void Dbg_ver_def_title(const char *); 4847c478bd9Sstevel@tonic-gate extern void Dbg_ver_need_title(const char *); 4857c478bd9Sstevel@tonic-gate extern void Dbg_ver_need_entry(Half, const char *, const char *); 4867c478bd9Sstevel@tonic-gate extern void Dbg_ver_nointerface(const char *); 4877c478bd9Sstevel@tonic-gate extern void Dbg_ver_symbol(const char *); 4887c478bd9Sstevel@tonic-gate 4897c478bd9Sstevel@tonic-gate /* 4907c478bd9Sstevel@tonic-gate * External interface routines. These are not linker specific and provide 4917c478bd9Sstevel@tonic-gate * generic routines for interpreting elf structures. 4927c478bd9Sstevel@tonic-gate */ 4937c478bd9Sstevel@tonic-gate #ifdef _ELF64 4947c478bd9Sstevel@tonic-gate #define Elf_phdr_entry Gelf_phdr_entry 4957c478bd9Sstevel@tonic-gate #define Elf_shdr_entry Gelf_shdr_entry 4967c478bd9Sstevel@tonic-gate #define Elf_sym_table_entry Gelf_sym_table_entry 4977c478bd9Sstevel@tonic-gate #else /* elf32 */ 4987c478bd9Sstevel@tonic-gate extern void Elf_phdr_entry(Half, Elf32_Phdr *); 4997c478bd9Sstevel@tonic-gate extern void Elf_shdr_entry(Half, Elf32_Shdr *); 5007c478bd9Sstevel@tonic-gate extern void Elf_sym_table_entry(const char *, Elf32_Ehdr *, 5017c478bd9Sstevel@tonic-gate Elf32_Sym *, Elf32_Word, const char *, 5027c478bd9Sstevel@tonic-gate const char *); 5037c478bd9Sstevel@tonic-gate #endif /* _ELF64 */ 5047c478bd9Sstevel@tonic-gate 5057c478bd9Sstevel@tonic-gate /* 5067c478bd9Sstevel@tonic-gate * These are used by both the Elf32 and Elf64 sides. 5077c478bd9Sstevel@tonic-gate */ 5087c478bd9Sstevel@tonic-gate extern const char *Gelf_sym_dem(const char *); 5097c478bd9Sstevel@tonic-gate 5107c478bd9Sstevel@tonic-gate extern void Gelf_cap_print(GElf_Cap *, int, Half); 5117c478bd9Sstevel@tonic-gate extern void Gelf_cap_title(void); 5127c478bd9Sstevel@tonic-gate extern void Gelf_phdr_entry(Half, GElf_Phdr *); 5137c478bd9Sstevel@tonic-gate extern void Gelf_shdr_entry(Half, GElf_Shdr *); 5147c478bd9Sstevel@tonic-gate extern void Gelf_sym_table_entry(const char *, GElf_Ehdr *, 5157c478bd9Sstevel@tonic-gate GElf_Sym *, GElf_Word, const char *, const char *); 5167c478bd9Sstevel@tonic-gate extern void Gelf_elf_data_title(void); 5177c478bd9Sstevel@tonic-gate extern void Gelf_syminfo_entry(int, GElf_Syminfo *, const char *, 5187c478bd9Sstevel@tonic-gate const char *); 5197c478bd9Sstevel@tonic-gate extern void Gelf_sym_table_title(GElf_Ehdr *, const char *, 5207c478bd9Sstevel@tonic-gate const char *); 5217c478bd9Sstevel@tonic-gate extern void Gelf_ver_def_title(void); 5227c478bd9Sstevel@tonic-gate extern void Gelf_ver_need_title(void); 5237c478bd9Sstevel@tonic-gate extern void Gelf_ver_line_1(const char *, const char *, 5247c478bd9Sstevel@tonic-gate const char *, const char *); 5257c478bd9Sstevel@tonic-gate extern void Gelf_ver_line_2(const char *, const char *); 5267c478bd9Sstevel@tonic-gate extern void Gelf_ver_line_3(const char *, const char *, 5277c478bd9Sstevel@tonic-gate const char *); 5287c478bd9Sstevel@tonic-gate 5297c478bd9Sstevel@tonic-gate extern void Gelf_dyn_print(GElf_Dyn *, int ndx, const char *, Half); 5307c478bd9Sstevel@tonic-gate extern void Gelf_dyn_title(void); 5317c478bd9Sstevel@tonic-gate extern void Gelf_elf_header(GElf_Ehdr *, GElf_Shdr *); 5327c478bd9Sstevel@tonic-gate extern void Gelf_got_title(uchar_t); 5337c478bd9Sstevel@tonic-gate extern void Gelf_got_entry(GElf_Ehdr *, Sword, GElf_Addr, 5347c478bd9Sstevel@tonic-gate GElf_Xword, GElf_Word, void *, const char *); 5357c478bd9Sstevel@tonic-gate extern void Gelf_reloc_entry(const char *, GElf_Half, GElf_Word, 5367c478bd9Sstevel@tonic-gate GElf_Rela *, const char *, const char *); 5377c478bd9Sstevel@tonic-gate extern void Gelf_syminfo_title(void); 5387c478bd9Sstevel@tonic-gate 5397c478bd9Sstevel@tonic-gate #ifdef __cplusplus 5407c478bd9Sstevel@tonic-gate } 5417c478bd9Sstevel@tonic-gate #endif 5427c478bd9Sstevel@tonic-gate 5437c478bd9Sstevel@tonic-gate #endif /* _DEBUG_H */ 544