1*7c478bd9Sstevel@tonic-gate /* 2*7c478bd9Sstevel@tonic-gate * CDDL HEADER START 3*7c478bd9Sstevel@tonic-gate * 4*7c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5*7c478bd9Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 6*7c478bd9Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 7*7c478bd9Sstevel@tonic-gate * with the License. 8*7c478bd9Sstevel@tonic-gate * 9*7c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*7c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 11*7c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 12*7c478bd9Sstevel@tonic-gate * and limitations under the License. 13*7c478bd9Sstevel@tonic-gate * 14*7c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 15*7c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*7c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 17*7c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 18*7c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 19*7c478bd9Sstevel@tonic-gate * 20*7c478bd9Sstevel@tonic-gate * CDDL HEADER END 21*7c478bd9Sstevel@tonic-gate */ 22*7c478bd9Sstevel@tonic-gate /* 23*7c478bd9Sstevel@tonic-gate * Copyright 2005 Sun Microsystems, Inc. All rights reserved. 24*7c478bd9Sstevel@tonic-gate * Use is subject to license terms. 25*7c478bd9Sstevel@tonic-gate */ 26*7c478bd9Sstevel@tonic-gate 27*7c478bd9Sstevel@tonic-gate #ifndef _DEBUG_H 28*7c478bd9Sstevel@tonic-gate #define _DEBUG_H 29*7c478bd9Sstevel@tonic-gate 30*7c478bd9Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 31*7c478bd9Sstevel@tonic-gate 32*7c478bd9Sstevel@tonic-gate /* 33*7c478bd9Sstevel@tonic-gate * Global include file for linker debugging. 34*7c478bd9Sstevel@tonic-gate * 35*7c478bd9Sstevel@tonic-gate * ld(1) and ld.so carry out all diagnostic debugging calls via dlopen'ing 36*7c478bd9Sstevel@tonic-gate * the library liblddbg.so. Thus debugging is always enabled. The utility 37*7c478bd9Sstevel@tonic-gate * elfdump() is explicitly dependent upon this library. There are two 38*7c478bd9Sstevel@tonic-gate * categories of routines defined in this library: 39*7c478bd9Sstevel@tonic-gate * 40*7c478bd9Sstevel@tonic-gate * o Debugging routines that have specific linker knowledge, and test the 41*7c478bd9Sstevel@tonic-gate * class of debugging allowable before proceeding, start with the `Dbg_' 42*7c478bd9Sstevel@tonic-gate * prefix. 43*7c478bd9Sstevel@tonic-gate * 44*7c478bd9Sstevel@tonic-gate * o Lower level routines that provide generic ELF structure interpretation 45*7c478bd9Sstevel@tonic-gate * start with the `Elf_' prefix. These latter routines are the only 46*7c478bd9Sstevel@tonic-gate * routines used by the elfdump() utility. 47*7c478bd9Sstevel@tonic-gate */ 48*7c478bd9Sstevel@tonic-gate 49*7c478bd9Sstevel@tonic-gate #include <libelf.h> 50*7c478bd9Sstevel@tonic-gate #include <sgs.h> 51*7c478bd9Sstevel@tonic-gate #include <libld.h> 52*7c478bd9Sstevel@tonic-gate #include <rtld.h> 53*7c478bd9Sstevel@tonic-gate #include <machdep.h> 54*7c478bd9Sstevel@tonic-gate #include <gelf.h> 55*7c478bd9Sstevel@tonic-gate 56*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 57*7c478bd9Sstevel@tonic-gate extern "C" { 58*7c478bd9Sstevel@tonic-gate #endif 59*7c478bd9Sstevel@tonic-gate 60*7c478bd9Sstevel@tonic-gate /* 61*7c478bd9Sstevel@tonic-gate * Define any interface flags. These flags direct the debugging routine to 62*7c478bd9Sstevel@tonic-gate * generate different diagnostics, thus the strings themselves are maintained 63*7c478bd9Sstevel@tonic-gate * in this library. 64*7c478bd9Sstevel@tonic-gate */ 65*7c478bd9Sstevel@tonic-gate #define DBG_SUP_ENVIRON 1 66*7c478bd9Sstevel@tonic-gate #define DBG_SUP_CMDLINE 2 67*7c478bd9Sstevel@tonic-gate #define DBG_SUP_DEFAULT 3 68*7c478bd9Sstevel@tonic-gate 69*7c478bd9Sstevel@tonic-gate #define DBG_CONF_IGNORE 1 /* configuration processing errors */ 70*7c478bd9Sstevel@tonic-gate #define DBG_CONF_VERSION 2 71*7c478bd9Sstevel@tonic-gate #define DBG_CONF_PRCFAIL 3 72*7c478bd9Sstevel@tonic-gate #define DBG_CONF_CORRUPT 4 73*7c478bd9Sstevel@tonic-gate 74*7c478bd9Sstevel@tonic-gate #define DBG_ORDER_INFO_RANGE 1 /* sh_link out of range */ 75*7c478bd9Sstevel@tonic-gate #define DBG_ORDER_INFO_ORDER 2 /* sh_info also ordered */ 76*7c478bd9Sstevel@tonic-gate #define DBG_ORDER_LINK_OUTRANGE 3 /* sh_link out of range */ 77*7c478bd9Sstevel@tonic-gate #define DBG_ORDER_FLAGS 4 /* sh_flags do not match */ 78*7c478bd9Sstevel@tonic-gate #define DBG_ORDER_CYCLIC 5 /* sh_link cyclic */ 79*7c478bd9Sstevel@tonic-gate #define DBG_ORDER_LINK_ERROR 6 /* sh_link (one) has an error */ 80*7c478bd9Sstevel@tonic-gate 81*7c478bd9Sstevel@tonic-gate #define DBG_INIT_SORT 1 /* calling init from sorted order */ 82*7c478bd9Sstevel@tonic-gate #define DBG_INIT_PEND 2 /* calling pending init */ 83*7c478bd9Sstevel@tonic-gate #define DBG_INIT_DYN 3 /* dynamically triggered init */ 84*7c478bd9Sstevel@tonic-gate #define DBG_INIT_DONE 4 /* init completed */ 85*7c478bd9Sstevel@tonic-gate 86*7c478bd9Sstevel@tonic-gate #define DBG_DLSYM_DEF 0 87*7c478bd9Sstevel@tonic-gate #define DBG_DLSYM_NEXT 1 88*7c478bd9Sstevel@tonic-gate #define DBG_DLSYM_DEFAULT 2 89*7c478bd9Sstevel@tonic-gate #define DBG_DLSYM_SELF 3 90*7c478bd9Sstevel@tonic-gate #define DBG_DLSYM_PROBE 4 91*7c478bd9Sstevel@tonic-gate 92*7c478bd9Sstevel@tonic-gate #define DBG_DLCLOSE_NULL 0 93*7c478bd9Sstevel@tonic-gate #define DBG_DLCLOSE_IGNORE 1 94*7c478bd9Sstevel@tonic-gate #define DBG_DLCLOSE_RESCAN 2 95*7c478bd9Sstevel@tonic-gate 96*7c478bd9Sstevel@tonic-gate #define DBG_WAIT_INIT 1 97*7c478bd9Sstevel@tonic-gate #define DBG_WAIT_FINI 2 98*7c478bd9Sstevel@tonic-gate #define DBG_WAIT_SYMBOL 3 99*7c478bd9Sstevel@tonic-gate 100*7c478bd9Sstevel@tonic-gate #define DBG_SYM_REDUCE_GLOBAL 1 /* reporting global symbols to local */ 101*7c478bd9Sstevel@tonic-gate #define DBG_SYM_REDUCE_RETAIN 2 /* reporting non reduced local syms */ 102*7c478bd9Sstevel@tonic-gate 103*7c478bd9Sstevel@tonic-gate #define DBG_DEP_CREATE 1 /* Group handle operations */ 104*7c478bd9Sstevel@tonic-gate #define DBG_DEP_ADD 2 105*7c478bd9Sstevel@tonic-gate #define DBG_DEP_DELETE 3 106*7c478bd9Sstevel@tonic-gate #define DBG_DEP_REMOVE 4 107*7c478bd9Sstevel@tonic-gate #define DBG_DEP_REMAIN 5 108*7c478bd9Sstevel@tonic-gate #define DBG_DEP_ORPHAN 6 109*7c478bd9Sstevel@tonic-gate #define DBG_DEP_REINST 7 110*7c478bd9Sstevel@tonic-gate 111*7c478bd9Sstevel@tonic-gate #define DBG_BINFO_FOUND 0x0001 /* information regarding binding */ 112*7c478bd9Sstevel@tonic-gate #define DBG_BINFO_DIRECT 0x0002 /* bound directly */ 113*7c478bd9Sstevel@tonic-gate #define DBG_BINFO_COPYREF 0x0004 /* bound to copy relocated reference */ 114*7c478bd9Sstevel@tonic-gate #define DBG_BINFO_FILTEE 0x0008 /* bound to filtee */ 115*7c478bd9Sstevel@tonic-gate #define DBG_BINFO_INTERPOSE 0x0010 /* bound to an identified interposer */ 116*7c478bd9Sstevel@tonic-gate #define DBG_BINFO_PLTADDR 0x0020 /* bound to executables undefined plt */ 117*7c478bd9Sstevel@tonic-gate #define DBG_BINFO_MSK 0xffff 118*7c478bd9Sstevel@tonic-gate 119*7c478bd9Sstevel@tonic-gate #define DBG_CAP_INITIAL 0 120*7c478bd9Sstevel@tonic-gate #define DBG_CAP_IGNORE 1 121*7c478bd9Sstevel@tonic-gate #define DBG_CAP_OLD 2 122*7c478bd9Sstevel@tonic-gate #define DBG_CAP_NEW 3 123*7c478bd9Sstevel@tonic-gate #define DBG_CAP_RESOLVED 4 124*7c478bd9Sstevel@tonic-gate 125*7c478bd9Sstevel@tonic-gate #define DBG_REL_START 1 126*7c478bd9Sstevel@tonic-gate #define DBG_REL_FINISH 2 127*7c478bd9Sstevel@tonic-gate #define DBG_REL_NONE 3 128*7c478bd9Sstevel@tonic-gate 129*7c478bd9Sstevel@tonic-gate /* 130*7c478bd9Sstevel@tonic-gate * Define our setup entry point. 131*7c478bd9Sstevel@tonic-gate */ 132*7c478bd9Sstevel@tonic-gate extern uint_t Dbg_setup(const char *); 133*7c478bd9Sstevel@tonic-gate extern void Dbg_set(uint_t); 134*7c478bd9Sstevel@tonic-gate 135*7c478bd9Sstevel@tonic-gate /* 136*7c478bd9Sstevel@tonic-gate * Define a user macro to invoke debugging. The `dbg_mask' variable acts as a 137*7c478bd9Sstevel@tonic-gate * suitable flag, and can be set to collect the return value from Dbg_setup(). 138*7c478bd9Sstevel@tonic-gate */ 139*7c478bd9Sstevel@tonic-gate extern uint_t dbg_mask; 140*7c478bd9Sstevel@tonic-gate 141*7c478bd9Sstevel@tonic-gate #define DBG_CALL(func) if (dbg_mask) func 142*7c478bd9Sstevel@tonic-gate 143*7c478bd9Sstevel@tonic-gate /* 144*7c478bd9Sstevel@tonic-gate * Most debugging tokens are interpreted within liblddbg, and thus any flags 145*7c478bd9Sstevel@tonic-gate * within dbg_mask are only meaningful to this library. The following flags 146*7c478bd9Sstevel@tonic-gate * may be set by the Dbg_setup() by can be interpreted by the caller. 147*7c478bd9Sstevel@tonic-gate */ 148*7c478bd9Sstevel@tonic-gate #define DBG_G_SNAME 0x10000000 /* prepend simple name */ 149*7c478bd9Sstevel@tonic-gate #define DBG_G_FNAME 0x20000000 /* prepend full name */ 150*7c478bd9Sstevel@tonic-gate #define DBG_G_CLASS 0x40000000 /* prepend ELF class */ 151*7c478bd9Sstevel@tonic-gate 152*7c478bd9Sstevel@tonic-gate /* 153*7c478bd9Sstevel@tonic-gate * Print routine, this must be supplied by the application. 154*7c478bd9Sstevel@tonic-gate */ 155*7c478bd9Sstevel@tonic-gate /*PRINTFLIKE1*/ 156*7c478bd9Sstevel@tonic-gate extern void dbg_print(const char *, ...); 157*7c478bd9Sstevel@tonic-gate 158*7c478bd9Sstevel@tonic-gate 159*7c478bd9Sstevel@tonic-gate /* 160*7c478bd9Sstevel@tonic-gate * External interface routines. These are linker specific. 161*7c478bd9Sstevel@tonic-gate */ 162*7c478bd9Sstevel@tonic-gate #ifdef _ELF64 163*7c478bd9Sstevel@tonic-gate #define Dbg_cap_hw_1 Dbg_cap_hw_164 164*7c478bd9Sstevel@tonic-gate #define Dbg_cap_mapfile Dbg_cap_mapfile64 165*7c478bd9Sstevel@tonic-gate #define Dbg_cap_sec_entry Dbg_cap_sec_entry64 166*7c478bd9Sstevel@tonic-gate #define Dbg_file_analyze Dbg_file_analyze64 167*7c478bd9Sstevel@tonic-gate #define Dbg_file_aout Dbg_file_aout64 168*7c478bd9Sstevel@tonic-gate #define Dbg_file_archive Dbg_file_archive64 169*7c478bd9Sstevel@tonic-gate #define Dbg_file_bind_entry Dbg_file_bind_entry64 170*7c478bd9Sstevel@tonic-gate #define Dbg_file_config_dis Dbg_file_config_dis64 171*7c478bd9Sstevel@tonic-gate #define Dbg_file_config_obj Dbg_file_config_obj64 172*7c478bd9Sstevel@tonic-gate #define Dbg_file_delete Dbg_file_delete64 173*7c478bd9Sstevel@tonic-gate #define Dbg_file_dlclose Dbg_file_dlclose64 174*7c478bd9Sstevel@tonic-gate #define Dbg_file_dldump Dbg_file_dldump64 175*7c478bd9Sstevel@tonic-gate #define Dbg_file_dlopen Dbg_file_dlopen64 176*7c478bd9Sstevel@tonic-gate #define Dbg_file_elf Dbg_file_elf64 177*7c478bd9Sstevel@tonic-gate #define Dbg_file_filtee Dbg_file_filtee64 178*7c478bd9Sstevel@tonic-gate #define Dbg_file_filter Dbg_file_filter64 179*7c478bd9Sstevel@tonic-gate #define Dbg_file_fixname Dbg_file_fixname64 180*7c478bd9Sstevel@tonic-gate #define Dbg_file_generic Dbg_file_generic64 181*7c478bd9Sstevel@tonic-gate #define Dbg_file_hdl_action Dbg_file_hdl_action64 182*7c478bd9Sstevel@tonic-gate #define Dbg_file_hdl_collect Dbg_file_hdl_collect64 183*7c478bd9Sstevel@tonic-gate #define Dbg_file_hdl_title Dbg_file_hdl_title64 184*7c478bd9Sstevel@tonic-gate #define Dbg_file_ldso Dbg_file_ldso64 185*7c478bd9Sstevel@tonic-gate #define Dbg_file_lazyload Dbg_file_lazyload64 186*7c478bd9Sstevel@tonic-gate #define Dbg_file_needed Dbg_file_needed64 187*7c478bd9Sstevel@tonic-gate #define Dbg_file_nl Dbg_file_nl64 188*7c478bd9Sstevel@tonic-gate #define Dbg_file_output Dbg_file_output64 189*7c478bd9Sstevel@tonic-gate #define Dbg_file_preload Dbg_file_preload64 190*7c478bd9Sstevel@tonic-gate #define Dbg_file_prot Dbg_file_prot64 191*7c478bd9Sstevel@tonic-gate #define Dbg_file_reuse Dbg_file_reuse64 192*7c478bd9Sstevel@tonic-gate #define Dbg_file_skip Dbg_file_skip64 193*7c478bd9Sstevel@tonic-gate #define Dbg_got_display Dbg_got_display64 194*7c478bd9Sstevel@tonic-gate #define Dbg_map_atsign Dbg_map_atsign64 195*7c478bd9Sstevel@tonic-gate #define Dbg_map_cap Dbg_map_cap64 196*7c478bd9Sstevel@tonic-gate #define Dbg_map_dash Dbg_map_dash64 197*7c478bd9Sstevel@tonic-gate #define Dbg_map_ent Dbg_map_ent64 198*7c478bd9Sstevel@tonic-gate #define Dbg_map_equal Dbg_map_equal64 199*7c478bd9Sstevel@tonic-gate #define Dbg_map_parse Dbg_map_parse64 200*7c478bd9Sstevel@tonic-gate #define Dbg_map_pipe Dbg_map_pipe64 201*7c478bd9Sstevel@tonic-gate #define Dbg_map_seg Dbg_map_seg64 202*7c478bd9Sstevel@tonic-gate #define Dbg_map_size_new Dbg_map_size_new64 203*7c478bd9Sstevel@tonic-gate #define Dbg_map_size_old Dbg_map_size_old64 204*7c478bd9Sstevel@tonic-gate #define Dbg_map_sort_fini Dbg_map_sort_fini64 205*7c478bd9Sstevel@tonic-gate #define Dbg_map_sort_orig Dbg_map_sort_orig64 206*7c478bd9Sstevel@tonic-gate #define Dbg_map_symbol Dbg_map_symbol64 207*7c478bd9Sstevel@tonic-gate #define Dbg_map_version Dbg_map_version64 208*7c478bd9Sstevel@tonic-gate #define Dbg_move_mventry Dbg_move_mventry64 209*7c478bd9Sstevel@tonic-gate #define Dbg_move_mventry2 Dbg_move_mventry264 210*7c478bd9Sstevel@tonic-gate #define Dbg_move_outsctadj Dbg_move_outsctadj64 211*7c478bd9Sstevel@tonic-gate #define Dbg_reloc_discard Dbg_reloc_discard64 212*7c478bd9Sstevel@tonic-gate #define Dbg_reloc_error Dbg_reloc_error64 213*7c478bd9Sstevel@tonic-gate #define Dbg_reloc_generate Dbg_reloc_generate64 214*7c478bd9Sstevel@tonic-gate #define Dbg_reloc_in Dbg_reloc_in64 215*7c478bd9Sstevel@tonic-gate #define Dbg_reloc_out Dbg_reloc_out64 216*7c478bd9Sstevel@tonic-gate #define Dbg_reloc_proc Dbg_reloc_proc64 217*7c478bd9Sstevel@tonic-gate #define Dbg_reloc_ars_entry Dbg_reloc_ars_entry64 218*7c478bd9Sstevel@tonic-gate #define Dbg_reloc_ors_entry Dbg_reloc_ors_entry64 219*7c478bd9Sstevel@tonic-gate #define Dbg_reloc_doact Dbg_reloc_doact64 220*7c478bd9Sstevel@tonic-gate #define Dbg_reloc_dooutrel Dbg_reloc_dooutrel64 221*7c478bd9Sstevel@tonic-gate #define Dbg_reloc_reg_apply Dbg_reloc_reg_apply64 222*7c478bd9Sstevel@tonic-gate #define Dbg_reloc_transition Dbg_reloc_transition64 223*7c478bd9Sstevel@tonic-gate #define Dbg_sec_added Dbg_sec_added64 224*7c478bd9Sstevel@tonic-gate #define Dbg_sec_created Dbg_sec_created64 225*7c478bd9Sstevel@tonic-gate #define Dbg_sec_discarded Dbg_sec_discarded64 226*7c478bd9Sstevel@tonic-gate #define Dbg_sec_group Dbg_sec_group64 227*7c478bd9Sstevel@tonic-gate #define Dbg_sec_group_discarded Dbg_sec_group_discarded64 228*7c478bd9Sstevel@tonic-gate #define Dbg_sec_in Dbg_sec_in64 229*7c478bd9Sstevel@tonic-gate #define Dbg_sec_order_list Dbg_sec_order_list64 230*7c478bd9Sstevel@tonic-gate #define Dbg_sec_order_error Dbg_sec_order_error64 231*7c478bd9Sstevel@tonic-gate #define Dbg_sec_strtab Dbg_sec_strtab64 232*7c478bd9Sstevel@tonic-gate #define Dbg_seg_entry Dbg_seg_entry64 233*7c478bd9Sstevel@tonic-gate #define Dbg_seg_list Dbg_seg_list64 234*7c478bd9Sstevel@tonic-gate #define Dbg_seg_os Dbg_seg_os64 235*7c478bd9Sstevel@tonic-gate #define Dbg_seg_title Dbg_seg_title64 236*7c478bd9Sstevel@tonic-gate #define Dbg_statistics_ar Dbg_statistics_ar64 237*7c478bd9Sstevel@tonic-gate #define Dbg_statistics_ld Dbg_statistics_ld64 238*7c478bd9Sstevel@tonic-gate #define Dbg_syminfo_entry Dbg_syminfo_entry64 239*7c478bd9Sstevel@tonic-gate #define Dbg_syminfo_entry_title Dbg_syminfo_entry_title64 240*7c478bd9Sstevel@tonic-gate #define Dbg_syminfo_title Dbg_syminfo_title64 241*7c478bd9Sstevel@tonic-gate #define Dbg_syms_ar_checking Dbg_syms_ar_checking64 242*7c478bd9Sstevel@tonic-gate #define Dbg_syms_ar_entry Dbg_syms_ar_entry64 243*7c478bd9Sstevel@tonic-gate #define Dbg_syms_ar_resolve Dbg_syms_ar_resolve64 244*7c478bd9Sstevel@tonic-gate #define Dbg_syms_created Dbg_syms_created64 245*7c478bd9Sstevel@tonic-gate #define Dbg_syms_discarded Dbg_syms_discarded64 246*7c478bd9Sstevel@tonic-gate #define Dbg_syms_entered Dbg_syms_entered64 247*7c478bd9Sstevel@tonic-gate #define Dbg_syms_entry Dbg_syms_entry64 248*7c478bd9Sstevel@tonic-gate #define Dbg_syms_global Dbg_syms_global64 249*7c478bd9Sstevel@tonic-gate #define Dbg_syms_ignore Dbg_syms_ignore64 250*7c478bd9Sstevel@tonic-gate #define Dbg_syms_new Dbg_syms_new64 251*7c478bd9Sstevel@tonic-gate #define Dbg_syms_nl Dbg_syms_nl64 252*7c478bd9Sstevel@tonic-gate #define Dbg_syms_old Dbg_syms_old64 253*7c478bd9Sstevel@tonic-gate #define Dbg_syms_process Dbg_syms_process64 254*7c478bd9Sstevel@tonic-gate #define Dbg_syms_reduce Dbg_syms_reduce64 255*7c478bd9Sstevel@tonic-gate #define Dbg_syms_reloc Dbg_syms_reloc64 256*7c478bd9Sstevel@tonic-gate #define Dbg_syms_resolved Dbg_syms_resolved64 257*7c478bd9Sstevel@tonic-gate #define Dbg_syms_resolving1 Dbg_syms_resolving164 258*7c478bd9Sstevel@tonic-gate #define Dbg_syms_resolving2 Dbg_syms_resolving264 259*7c478bd9Sstevel@tonic-gate #define Dbg_syms_sec_entry Dbg_syms_sec_entry64 260*7c478bd9Sstevel@tonic-gate #define Dbg_syms_sec_title Dbg_syms_sec_title64 261*7c478bd9Sstevel@tonic-gate #define Dbg_syms_spec_title Dbg_syms_spec_title64 262*7c478bd9Sstevel@tonic-gate #define Dbg_syms_up_title Dbg_syms_up_title64 263*7c478bd9Sstevel@tonic-gate #define Dbg_syms_updated Dbg_syms_updated64 264*7c478bd9Sstevel@tonic-gate #define Dbg_syms_dlsym Dbg_syms_dlsym64 265*7c478bd9Sstevel@tonic-gate #define Dbg_syms_lookup_aout Dbg_syms_lookup_aout64 266*7c478bd9Sstevel@tonic-gate #define Dbg_syms_lookup Dbg_syms_lookup64 267*7c478bd9Sstevel@tonic-gate #define Dbg_tls_modactivity Dbg_tls_modactivity64 268*7c478bd9Sstevel@tonic-gate #define Dbg_tls_static_block Dbg_tls_static_block64 269*7c478bd9Sstevel@tonic-gate #define Dbg_unused_sec Dbg_unused_sec64 270*7c478bd9Sstevel@tonic-gate #define Dbg_audit_interface Dbg_audit_interface64 271*7c478bd9Sstevel@tonic-gate #define Dbg_audit_lib Dbg_audit_lib64 272*7c478bd9Sstevel@tonic-gate #define Dbg_audit_object Dbg_audit_object64 273*7c478bd9Sstevel@tonic-gate #define Dbg_audit_symval Dbg_audit_symval64 274*7c478bd9Sstevel@tonic-gate #define Dbg_audit_version Dbg_audit_version64 275*7c478bd9Sstevel@tonic-gate #define Dbg_ver_avail_entry Dbg_ver_avail_entry64 276*7c478bd9Sstevel@tonic-gate #define Dbg_ver_desc_entry Dbg_ver_desc_entry64 277*7c478bd9Sstevel@tonic-gate #endif /* _ELF64 */ 278*7c478bd9Sstevel@tonic-gate 279*7c478bd9Sstevel@tonic-gate extern void Dbg_args_files(int, char *); 280*7c478bd9Sstevel@tonic-gate extern void Dbg_args_flags(int, int); 281*7c478bd9Sstevel@tonic-gate extern void Dbg_bind_global(const char *, caddr_t, caddr_t, Xword, 282*7c478bd9Sstevel@tonic-gate Pltbindtype, const char *, caddr_t, caddr_t, 283*7c478bd9Sstevel@tonic-gate const char *, uint_t); 284*7c478bd9Sstevel@tonic-gate extern void Dbg_bind_plt_summary(Half, Word, Word, Word, 285*7c478bd9Sstevel@tonic-gate Word, Word, Word); 286*7c478bd9Sstevel@tonic-gate extern void Dbg_bind_profile(uint_t, uint_t); 287*7c478bd9Sstevel@tonic-gate extern void Dbg_bind_weak(const char *, caddr_t, caddr_t, 288*7c478bd9Sstevel@tonic-gate const char *); 289*7c478bd9Sstevel@tonic-gate extern void Dbg_cap_hw_candidate(const char *); 290*7c478bd9Sstevel@tonic-gate extern void Dbg_cap_hw_filter(const char *, const char *); 291*7c478bd9Sstevel@tonic-gate extern void Dbg_cap_hw_1(Xword, Half); 292*7c478bd9Sstevel@tonic-gate extern void Dbg_cap_mapfile(Xword, Xword, Half); 293*7c478bd9Sstevel@tonic-gate extern void Dbg_cap_sec_entry(uint_t, Xword, Xword, Half); 294*7c478bd9Sstevel@tonic-gate extern void Dbg_cap_sec_title(const char *); 295*7c478bd9Sstevel@tonic-gate extern void Dbg_ent_print(Half, List * len, Boolean); 296*7c478bd9Sstevel@tonic-gate extern void Dbg_file_analyze(Rt_map *); 297*7c478bd9Sstevel@tonic-gate extern void Dbg_file_aout(const char *, ulong_t, ulong_t, ulong_t); 298*7c478bd9Sstevel@tonic-gate extern void Dbg_file_archive(const char *, int); 299*7c478bd9Sstevel@tonic-gate extern void Dbg_file_ar_rescan(void); 300*7c478bd9Sstevel@tonic-gate extern void Dbg_file_bind_entry(Bnd_desc *); 301*7c478bd9Sstevel@tonic-gate extern void Dbg_file_cntl(Lm_list *, Aliste, Aliste); 302*7c478bd9Sstevel@tonic-gate extern void Dbg_file_config_dis(const char *, int); 303*7c478bd9Sstevel@tonic-gate extern void Dbg_file_config_obj(const char *, const char *, 304*7c478bd9Sstevel@tonic-gate const char *); 305*7c478bd9Sstevel@tonic-gate extern void Dbg_file_delete(const char *); 306*7c478bd9Sstevel@tonic-gate extern void Dbg_file_dlclose(const char *, int); 307*7c478bd9Sstevel@tonic-gate extern void Dbg_file_dldump(const char *, const char *, int); 308*7c478bd9Sstevel@tonic-gate extern void Dbg_file_dlopen(const char *, const char *, int); 309*7c478bd9Sstevel@tonic-gate extern void Dbg_file_del_rescan(void); 310*7c478bd9Sstevel@tonic-gate extern void Dbg_file_elf(const char *, ulong_t, ulong_t, ulong_t, 311*7c478bd9Sstevel@tonic-gate ulong_t, Lmid_t, Aliste); 312*7c478bd9Sstevel@tonic-gate extern void Dbg_file_filtee(const char *, const char *, int); 313*7c478bd9Sstevel@tonic-gate extern void Dbg_file_filter(const char *, const char *, int); 314*7c478bd9Sstevel@tonic-gate extern void Dbg_file_fixname(const char *, const char *); 315*7c478bd9Sstevel@tonic-gate extern void Dbg_file_generic(Ifl_desc *); 316*7c478bd9Sstevel@tonic-gate extern void Dbg_file_hdl_action(Grp_hdl *, Rt_map *, int); 317*7c478bd9Sstevel@tonic-gate extern void Dbg_file_hdl_collect(Grp_hdl *, const char *); 318*7c478bd9Sstevel@tonic-gate extern void Dbg_file_hdl_title(int); 319*7c478bd9Sstevel@tonic-gate extern void Dbg_file_lazyload(const char *, const char *, 320*7c478bd9Sstevel@tonic-gate const char *); 321*7c478bd9Sstevel@tonic-gate extern void Dbg_file_ldso(const char *, ulong_t, ulong_t, ulong_t, 322*7c478bd9Sstevel@tonic-gate ulong_t); 323*7c478bd9Sstevel@tonic-gate extern void Dbg_file_mode_promote(const char *, int); 324*7c478bd9Sstevel@tonic-gate extern void Dbg_file_needed(const char *, const char *); 325*7c478bd9Sstevel@tonic-gate extern void Dbg_file_nl(void); 326*7c478bd9Sstevel@tonic-gate extern void Dbg_file_output(Ofl_desc *); 327*7c478bd9Sstevel@tonic-gate extern void Dbg_file_preload(const char *); 328*7c478bd9Sstevel@tonic-gate extern void Dbg_file_prot(const char *, int); 329*7c478bd9Sstevel@tonic-gate extern void Dbg_file_reuse(const char *, const char *); 330*7c478bd9Sstevel@tonic-gate extern void Dbg_file_rejected(Rej_desc *); 331*7c478bd9Sstevel@tonic-gate extern void Dbg_file_skip(const char *, const char *); 332*7c478bd9Sstevel@tonic-gate extern void Dbg_got_display(Gottable *, Ofl_desc *); 333*7c478bd9Sstevel@tonic-gate extern void Dbg_libs_audit(const char *, const char *); 334*7c478bd9Sstevel@tonic-gate extern void Dbg_libs_ignore(const char *); 335*7c478bd9Sstevel@tonic-gate extern void Dbg_libs_init(List *, List *); 336*7c478bd9Sstevel@tonic-gate extern void Dbg_libs_l(const char *, const char *); 337*7c478bd9Sstevel@tonic-gate extern void Dbg_libs_path(const char *, Half, const char *); 338*7c478bd9Sstevel@tonic-gate extern void Dbg_libs_req(const char *, const char *, const char *); 339*7c478bd9Sstevel@tonic-gate extern void Dbg_libs_update(List *, List *); 340*7c478bd9Sstevel@tonic-gate extern void Dbg_libs_yp(const char *); 341*7c478bd9Sstevel@tonic-gate extern void Dbg_libs_ylu(const char *, const char *, int); 342*7c478bd9Sstevel@tonic-gate extern void Dbg_libs_find(const char *); 343*7c478bd9Sstevel@tonic-gate extern void Dbg_libs_found(const char *, int); 344*7c478bd9Sstevel@tonic-gate extern void Dbg_map_atsign(Boolean); 345*7c478bd9Sstevel@tonic-gate extern void Dbg_map_dash(const char *, Sdf_desc *); 346*7c478bd9Sstevel@tonic-gate extern void Dbg_map_ent(Boolean, Ent_desc *, Ofl_desc *); 347*7c478bd9Sstevel@tonic-gate extern void Dbg_map_equal(Boolean); 348*7c478bd9Sstevel@tonic-gate extern void Dbg_map_parse(const char *); 349*7c478bd9Sstevel@tonic-gate extern void Dbg_map_pipe(Sg_desc *, const char *, const Word); 350*7c478bd9Sstevel@tonic-gate extern void Dbg_map_seg(Half, int, Sg_desc *); 351*7c478bd9Sstevel@tonic-gate extern void Dbg_map_size_new(const char *); 352*7c478bd9Sstevel@tonic-gate extern void Dbg_map_size_old(Ehdr *, Sym_desc *); 353*7c478bd9Sstevel@tonic-gate extern void Dbg_map_sort_fini(Sg_desc *); 354*7c478bd9Sstevel@tonic-gate extern void Dbg_map_sort_orig(Sg_desc *); 355*7c478bd9Sstevel@tonic-gate extern void Dbg_map_symbol(Ehdr *, Sym_desc *); 356*7c478bd9Sstevel@tonic-gate extern void Dbg_map_version(const char *, const char *, int); 357*7c478bd9Sstevel@tonic-gate extern void Dbg_move_adjexpandreloc(ulong_t, const char *); 358*7c478bd9Sstevel@tonic-gate extern void Dbg_move_adjmovereloc(ulong_t, ulong_t, const char *); 359*7c478bd9Sstevel@tonic-gate extern void Dbg_move_data(const char *); 360*7c478bd9Sstevel@tonic-gate extern void Dbg_move_expanding(Move *, Addr); 361*7c478bd9Sstevel@tonic-gate extern void Dbg_move_input1(const char *); 362*7c478bd9Sstevel@tonic-gate extern void Dbg_move_mventry(int, Move *, Sym_desc *); 363*7c478bd9Sstevel@tonic-gate extern void Dbg_move_mventry2(Move *, Word, char *); 364*7c478bd9Sstevel@tonic-gate extern void Dbg_move_outmove(const uchar_t *); 365*7c478bd9Sstevel@tonic-gate extern void Dbg_move_outsctadj(Sym_desc *); 366*7c478bd9Sstevel@tonic-gate extern void Dbg_move_parexpn(const char *, const char *); 367*7c478bd9Sstevel@tonic-gate #if defined(_ELF64) 368*7c478bd9Sstevel@tonic-gate extern void Dbg_pltpad_bindto64(const char *, const char *, Addr); 369*7c478bd9Sstevel@tonic-gate extern void Dbg_pltpad_boundto64(const char *, Addr, const char *, 370*7c478bd9Sstevel@tonic-gate const char *); 371*7c478bd9Sstevel@tonic-gate #endif 372*7c478bd9Sstevel@tonic-gate extern void Dbg_reloc_apply(unsigned long long, unsigned long long); 373*7c478bd9Sstevel@tonic-gate extern void Dbg_reloc_discard(Half, Rel_desc *); 374*7c478bd9Sstevel@tonic-gate extern void Dbg_reloc_error(Half, Word, void *, const char *, 375*7c478bd9Sstevel@tonic-gate const char *); 376*7c478bd9Sstevel@tonic-gate extern void Dbg_reloc_generate(Os_desc *, Word); 377*7c478bd9Sstevel@tonic-gate extern void Dbg_reloc_reg_apply(unsigned long long, 378*7c478bd9Sstevel@tonic-gate unsigned long long); 379*7c478bd9Sstevel@tonic-gate extern void Dbg_reloc_in(Half, Word, void *, const char *, 380*7c478bd9Sstevel@tonic-gate const char *); 381*7c478bd9Sstevel@tonic-gate extern void Dbg_reloc_out(Half, Word, void *, const char *, 382*7c478bd9Sstevel@tonic-gate const char *); 383*7c478bd9Sstevel@tonic-gate extern void Dbg_reloc_proc(Os_desc *, Is_desc *, Is_desc *); 384*7c478bd9Sstevel@tonic-gate extern void Dbg_reloc_ars_entry(Half, Rel_desc *); 385*7c478bd9Sstevel@tonic-gate extern void Dbg_reloc_ors_entry(Half, Rel_desc *); 386*7c478bd9Sstevel@tonic-gate extern void Dbg_reloc_doactiverel(void); 387*7c478bd9Sstevel@tonic-gate extern void Dbg_reloc_doact(Half, Word, Xword, Xword, const char *, 388*7c478bd9Sstevel@tonic-gate Os_desc *); 389*7c478bd9Sstevel@tonic-gate extern void Dbg_reloc_dooutrel(GElf_Word); 390*7c478bd9Sstevel@tonic-gate extern void Dbg_reloc_copy(const char *, const char *, 391*7c478bd9Sstevel@tonic-gate const char *, int); 392*7c478bd9Sstevel@tonic-gate extern void Dbg_reloc_run(const char *, uint_t, int, int); 393*7c478bd9Sstevel@tonic-gate extern void Dbg_reloc_transition(Half, Word, Word, Xword, 394*7c478bd9Sstevel@tonic-gate const char *); 395*7c478bd9Sstevel@tonic-gate extern void Dbg_sec_added(Os_desc *, Sg_desc *); 396*7c478bd9Sstevel@tonic-gate extern void Dbg_sec_created(Os_desc *, Sg_desc *); 397*7c478bd9Sstevel@tonic-gate extern void Dbg_sec_discarded(Is_desc *, Is_desc *); 398*7c478bd9Sstevel@tonic-gate extern void Dbg_sec_group(Is_desc *); 399*7c478bd9Sstevel@tonic-gate extern void Dbg_sec_group_discarded(Is_desc *); 400*7c478bd9Sstevel@tonic-gate extern void Dbg_sec_in(Is_desc *); 401*7c478bd9Sstevel@tonic-gate extern void Dbg_sec_order_list(Ofl_desc *, int); 402*7c478bd9Sstevel@tonic-gate extern void Dbg_sec_order_error(Ifl_desc *, Word, int); 403*7c478bd9Sstevel@tonic-gate extern void Dbg_sec_strtab(Os_desc *, Str_tbl *); 404*7c478bd9Sstevel@tonic-gate extern void Dbg_seg_entry(Half, int, Sg_desc *); 405*7c478bd9Sstevel@tonic-gate extern void Dbg_seg_list(Half, List *); 406*7c478bd9Sstevel@tonic-gate extern void Dbg_seg_os(Ofl_desc *, Os_desc *, int); 407*7c478bd9Sstevel@tonic-gate extern void Dbg_seg_title(void); 408*7c478bd9Sstevel@tonic-gate extern void Dbg_support_action(const char *, const char *, 409*7c478bd9Sstevel@tonic-gate Support_ndx, const char *); 410*7c478bd9Sstevel@tonic-gate extern void Dbg_support_load(const char *, const char *); 411*7c478bd9Sstevel@tonic-gate extern void Dbg_support_req(const char *, int); 412*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_ar_checking(Xword, Elf_Arsym *, const char *); 413*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_ar_entry(Xword, Elf_Arsym *); 414*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_ar_resolve(Xword, Elf_Arsym *, const char *, 415*7c478bd9Sstevel@tonic-gate int); 416*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_ar_title(const char *, int); 417*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_created(const char *); 418*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_discarded(Sym_desc *, Is_desc *); 419*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_entered(Ehdr *, Sym *, Sym_desc *); 420*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_entry(Xword, Sym_desc *); 421*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_global(Xword, const char *); 422*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_ignore(Ehdr *, Sym_desc *); 423*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_lazy_rescan(const char *); 424*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_new(Ehdr *, Sym *, Sym_desc *); 425*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_nl(void); 426*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_old(Ehdr *, Sym_desc *); 427*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_process(Ifl_desc *); 428*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_reduce(int, Ehdr *, Sym_desc *, int, 429*7c478bd9Sstevel@tonic-gate const char *); 430*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_reloc(Ehdr *, Sym_desc *); 431*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_resolved(Ehdr *, Sym_desc *); 432*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_resolving1(Xword, const char *, int, int); 433*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_resolving2(Ehdr *, Sym *, Sym *, Sym_desc *, 434*7c478bd9Sstevel@tonic-gate Ifl_desc *); 435*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_sec_entry(int, Sg_desc *, Os_desc *); 436*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_sec_title(void); 437*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_spec_title(void); 438*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_up_title(Ehdr *); 439*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_updated(Ehdr *, Sym_desc *, const char *); 440*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_dlsym(const char *, const char *, const char *, 441*7c478bd9Sstevel@tonic-gate int); 442*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_lookup_aout(const char *); 443*7c478bd9Sstevel@tonic-gate extern void Dbg_syms_lookup(const char *, const char *, 444*7c478bd9Sstevel@tonic-gate const char *); 445*7c478bd9Sstevel@tonic-gate extern void Dbg_scc_title(int); 446*7c478bd9Sstevel@tonic-gate extern void Dbg_scc_entry(uint_t, const char *); 447*7c478bd9Sstevel@tonic-gate extern void Dbg_tls_modactivity(void *, uint_t); 448*7c478bd9Sstevel@tonic-gate extern void Dbg_tls_static_block(void *, ulong_t); 449*7c478bd9Sstevel@tonic-gate extern void Dbg_audit_interface(const char *, const char *); 450*7c478bd9Sstevel@tonic-gate extern void Dbg_audit_lib(const char *); 451*7c478bd9Sstevel@tonic-gate extern void Dbg_audit_object(const char *, const char *); 452*7c478bd9Sstevel@tonic-gate extern void Dbg_audit_symval(const char *, const char *, 453*7c478bd9Sstevel@tonic-gate const char *, Addr, Addr); 454*7c478bd9Sstevel@tonic-gate extern void Dbg_audit_version(const char *, ulong_t); 455*7c478bd9Sstevel@tonic-gate extern void Dbg_statistics_ar(Ofl_desc *); 456*7c478bd9Sstevel@tonic-gate extern void Dbg_statistics_ld(Ofl_desc *); 457*7c478bd9Sstevel@tonic-gate extern void Dbg_syminfo_entry(int, Syminfo *, Sym *, 458*7c478bd9Sstevel@tonic-gate const char *, Dyn *); 459*7c478bd9Sstevel@tonic-gate extern void Dbg_syminfo_title(void); 460*7c478bd9Sstevel@tonic-gate extern void Dbg_unused_file(const char *, int); 461*7c478bd9Sstevel@tonic-gate extern void Dbg_unused_rtldinfo(const char *, const char *); 462*7c478bd9Sstevel@tonic-gate extern void Dbg_unused_sec(Is_desc *); 463*7c478bd9Sstevel@tonic-gate extern void Dbg_unused_unref(const char *, const char *); 464*7c478bd9Sstevel@tonic-gate extern void Dbg_util_broadcast(const char *); 465*7c478bd9Sstevel@tonic-gate extern void Dbg_util_call_array(const char *, void *, 466*7c478bd9Sstevel@tonic-gate uint_t, uint_t); 467*7c478bd9Sstevel@tonic-gate extern void Dbg_util_call_fini(const char *); 468*7c478bd9Sstevel@tonic-gate extern void Dbg_util_call_init(const char *, int); 469*7c478bd9Sstevel@tonic-gate extern void Dbg_util_call_main(const char *); 470*7c478bd9Sstevel@tonic-gate extern void Dbg_util_dbnotify(rd_event_e, r_state_e); 471*7c478bd9Sstevel@tonic-gate extern void Dbg_util_intoolate(const char *); 472*7c478bd9Sstevel@tonic-gate extern void Dbg_util_nl(void); 473*7c478bd9Sstevel@tonic-gate extern void Dbg_util_no_init(const char *); 474*7c478bd9Sstevel@tonic-gate extern void Dbg_util_str(const char *); 475*7c478bd9Sstevel@tonic-gate extern void Dbg_util_wait(int, const char *, const char *); 476*7c478bd9Sstevel@tonic-gate extern void Dbg_ver_avail_entry(Ver_index *, const char *); 477*7c478bd9Sstevel@tonic-gate extern void Dbg_ver_avail_title(const char *); 478*7c478bd9Sstevel@tonic-gate extern void Dbg_ver_desc_entry(Ver_desc *); 479*7c478bd9Sstevel@tonic-gate extern void Dbg_ver_def_title(const char *); 480*7c478bd9Sstevel@tonic-gate extern void Dbg_ver_need_title(const char *); 481*7c478bd9Sstevel@tonic-gate extern void Dbg_ver_need_entry(Half, const char *, const char *); 482*7c478bd9Sstevel@tonic-gate extern void Dbg_ver_nointerface(const char *); 483*7c478bd9Sstevel@tonic-gate extern void Dbg_ver_symbol(const char *); 484*7c478bd9Sstevel@tonic-gate 485*7c478bd9Sstevel@tonic-gate /* 486*7c478bd9Sstevel@tonic-gate * External interface routines. These are not linker specific and provide 487*7c478bd9Sstevel@tonic-gate * generic routines for interpreting elf structures. 488*7c478bd9Sstevel@tonic-gate */ 489*7c478bd9Sstevel@tonic-gate #ifdef _ELF64 490*7c478bd9Sstevel@tonic-gate #define Elf_phdr_entry Gelf_phdr_entry 491*7c478bd9Sstevel@tonic-gate #define Elf_shdr_entry Gelf_shdr_entry 492*7c478bd9Sstevel@tonic-gate #define Elf_sym_table_entry Gelf_sym_table_entry 493*7c478bd9Sstevel@tonic-gate #else /* elf32 */ 494*7c478bd9Sstevel@tonic-gate extern void Elf_phdr_entry(Half, Elf32_Phdr *); 495*7c478bd9Sstevel@tonic-gate extern void Elf_shdr_entry(Half, Elf32_Shdr *); 496*7c478bd9Sstevel@tonic-gate extern void Elf_sym_table_entry(const char *, Elf32_Ehdr *, 497*7c478bd9Sstevel@tonic-gate Elf32_Sym *, Elf32_Word, const char *, 498*7c478bd9Sstevel@tonic-gate const char *); 499*7c478bd9Sstevel@tonic-gate #endif /* _ELF64 */ 500*7c478bd9Sstevel@tonic-gate 501*7c478bd9Sstevel@tonic-gate /* 502*7c478bd9Sstevel@tonic-gate * These are used by both the Elf32 and Elf64 sides. 503*7c478bd9Sstevel@tonic-gate */ 504*7c478bd9Sstevel@tonic-gate extern const char *Gelf_sym_dem(const char *); 505*7c478bd9Sstevel@tonic-gate 506*7c478bd9Sstevel@tonic-gate extern void Gelf_cap_print(GElf_Cap *, int, Half); 507*7c478bd9Sstevel@tonic-gate extern void Gelf_cap_title(void); 508*7c478bd9Sstevel@tonic-gate extern void Gelf_phdr_entry(Half, GElf_Phdr *); 509*7c478bd9Sstevel@tonic-gate extern void Gelf_shdr_entry(Half, GElf_Shdr *); 510*7c478bd9Sstevel@tonic-gate extern void Gelf_sym_table_entry(const char *, GElf_Ehdr *, 511*7c478bd9Sstevel@tonic-gate GElf_Sym *, GElf_Word, const char *, const char *); 512*7c478bd9Sstevel@tonic-gate extern void Gelf_elf_data_title(void); 513*7c478bd9Sstevel@tonic-gate extern void Gelf_syminfo_entry(int, GElf_Syminfo *, const char *, 514*7c478bd9Sstevel@tonic-gate const char *); 515*7c478bd9Sstevel@tonic-gate extern void Gelf_sym_table_title(GElf_Ehdr *, const char *, 516*7c478bd9Sstevel@tonic-gate const char *); 517*7c478bd9Sstevel@tonic-gate extern void Gelf_ver_def_title(void); 518*7c478bd9Sstevel@tonic-gate extern void Gelf_ver_need_title(void); 519*7c478bd9Sstevel@tonic-gate extern void Gelf_ver_line_1(const char *, const char *, 520*7c478bd9Sstevel@tonic-gate const char *, const char *); 521*7c478bd9Sstevel@tonic-gate extern void Gelf_ver_line_2(const char *, const char *); 522*7c478bd9Sstevel@tonic-gate extern void Gelf_ver_line_3(const char *, const char *, 523*7c478bd9Sstevel@tonic-gate const char *); 524*7c478bd9Sstevel@tonic-gate 525*7c478bd9Sstevel@tonic-gate extern void Gelf_dyn_print(GElf_Dyn *, int ndx, const char *, Half); 526*7c478bd9Sstevel@tonic-gate extern void Gelf_dyn_title(void); 527*7c478bd9Sstevel@tonic-gate extern void Gelf_elf_header(GElf_Ehdr *, GElf_Shdr *); 528*7c478bd9Sstevel@tonic-gate extern void Gelf_got_title(uchar_t); 529*7c478bd9Sstevel@tonic-gate extern void Gelf_got_entry(GElf_Ehdr *, Sword, GElf_Addr, 530*7c478bd9Sstevel@tonic-gate GElf_Xword, GElf_Word, void *, const char *); 531*7c478bd9Sstevel@tonic-gate extern void Gelf_reloc_entry(const char *, GElf_Half, GElf_Word, 532*7c478bd9Sstevel@tonic-gate GElf_Rela *, const char *, const char *); 533*7c478bd9Sstevel@tonic-gate extern void Gelf_syminfo_title(void); 534*7c478bd9Sstevel@tonic-gate 535*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 536*7c478bd9Sstevel@tonic-gate } 537*7c478bd9Sstevel@tonic-gate #endif 538*7c478bd9Sstevel@tonic-gate 539*7c478bd9Sstevel@tonic-gate #endif /* _DEBUG_H */ 540