Home | History | Annotate | Download | only in common
      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 /* LINTLIBRARY */
     22 /* PROTOLIB1 */
     23 
     24 /*
     25  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
     26  * Use is subject to license terms.
     27  */
     28 
     29 #include <sys/types.h>
     30 #include <sys/auxv.h>
     31 #include <debug.h>
     32 
     33 int	Dbg_setup(dbg_setup_caller_t, const char *, Dbg_desc *, const char **);
     34 const char *
     35 	Dbg_demangle_name(const char *);
     36 
     37 void	Dbg_args_file(Lm_list *, int, char *);
     38 void	Dbg_args_option(Lm_list *, int, int, char *);
     39 void	Dbg_args_str2chr(Lm_list *, int, const char *, int);
     40 void	Dbg_args_Wldel(Lm_list *, int, const char *);
     41 void	Dbg_audit_ignore(Rt_map *);
     42 void	Dbg_audit_interface(Lm_list *, const char *, const char *);
     43 void	Dbg_audit_lib(Lm_list *, const char *);
     44 void	Dbg_audit_object(Lm_list *, const char *, const char *);
     45 void	Dbg_audit_symval(Lm_list *, const char *, const char *, const char *,
     46 	    Addr, Addr);
     47 void	Dbg_audit_skip(Lm_list *, const char *, const char *);
     48 void	Dbg_audit_terminate(Lm_list *, const char *);
     49 void	Dbg_audit_version(Lm_list *, const char *, ulong_t);
     50 
     51 void	Dbg_basic_collect(Lm_list *);
     52 void	Dbg_basic_create(Lm_list *);
     53 void	Dbg_basic_files(Lm_list *);
     54 void	Dbg_basic_finish(Lm_list *);
     55 void	Dbg_basic_options(Lm_list *);
     56 void	Dbg_basic_relocate(Lm_list *);
     57 void	Dbg_basic_validate(Lm_list *);
     58 
     59 void	Dbg_tls_modactivity(Lm_list *, void *, uint_t);
     60 void	Dbg_tls_static_block(Lm_list *, void *, ulong_t, ulong_t);
     61 void	Dbg_tls_static_resv(Rt_map *, ulong_t, ulong_t);
     62 
     63 void	Dbg32_bind_global(Rt_map *, Elf32_Addr, Elf32_Off, Elf32_Word,
     64 	    Pltbindtype, Rt_map *, Elf32_Addr, Elf32_Off, const char *, uint_t);
     65 void	Dbg64_bind_global(Rt_map *, Elf64_Addr, Elf64_Off, Elf64_Xword,
     66 	    Pltbindtype, Rt_map *, Elf64_Addr, Elf64_Off, const char *, uint_t);
     67 void	Dbg64_bind_pltpad_to(Rt_map *, Addr, const char *, const char *);
     68 void	Dbg64_bind_pltpad_from(Rt_map *, Addr, const char *);
     69 void	Dbg32_bind_reject(Rt_map *, Rt_map *, const char *, int);
     70 void	Dbg64_bind_reject(Rt_map *, Rt_map *, const char *, int);
     71 void	Dbg32_bind_weak(Rt_map *, Elf32_Addr, Elf32_Addr, const char *);
     72 void	Dbg64_bind_weak(Rt_map *, Elf64_Addr, Elf64_Addr, const char *);
     73 
     74 void	Dbg32_cap_hw_candidate(Lm_list *, const char *);
     75 void	Dbg64_cap_hw_candidate(Lm_list *, const char *);
     76 void	Dbg32_cap_hw_filter(Lm_list *, const char *, Rt_map *);
     77 void	Dbg64_cap_hw_filter(Lm_list *, const char *, Rt_map *);
     78 void	Dbg32_cap_mapfile(Lm_list *, Elf32_Word, Elf32_Word, Elf32_Half);
     79 void	Dbg64_cap_mapfile(Lm_list *, Elf64_Xword, Elf64_Xword, Elf64_Half);
     80 void	Dbg32_cap_sec_entry(Lm_list *, uint_t, Elf32_Word, Elf32_Word,
     81 	    Elf32_Half);
     82 void	Dbg64_cap_sec_entry(Lm_list *, uint_t, Elf64_Xword, Elf64_Xword,
     83 	    Elf64_Half);
     84 void	Dbg32_cap_sec_title(Lm_list *, const char *);
     85 void	Dbg64_cap_sec_title(Lm_list *, const char *);
     86 void	Dbg32_cap_val_hw1(Lm_list *, Elf32_Word, Elf32_Half);
     87 void	Dbg64_cap_val_hw1(Lm_list *, Elf64_Xword, Elf64_Half);
     88 
     89 void	Dbg32_ent_print(Lm_list *, uchar_t, Elf32_Half, Alist *, Boolean);
     90 void	Dbg64_ent_print(Lm_list *, uchar_t, Elf64_Half, Alist *, Boolean);
     91 
     92 void	Dbg32_file_analyze(Rt_map *);
     93 void	Dbg64_file_analyze64(Rt_map *);
     94 void	Dbg32_file_aout(Lm_list *, const char *, Addr, size_t, const char *,
     95 	    Aliste);
     96 void	Dbg64_file_aout(Lm_list *, const char *, Addr, size_t, const char *,
     97 	    Aliste);
     98 void	Dbg32_file_archive(Lm_list *, const char *, int);
     99 void	Dbg64_file_archive(Lm_list *, const char *, int);
    100 void	Dbg32_file_bind_entry(Lm_list *, Bnd_desc *);
    101 void	Dbg64_file_bind_entry(Lm_list *, Bnd_desc *);
    102 void	Dbg32_file_bindings(Rt_map *, int);
    103 void	Dbg64_file_bindings(Rt_map *, int);
    104 void	Dbg32_file_config_dis(Lm_list *, const char *, int);
    105 void	Dbg64_file_config_dis(Lm_list *, const char *, int);
    106 void	Dbg32_file_config_obj(Lm_list *, const char *, const char *,
    107 	    const char *);
    108 void	Dbg64_file_config_obj(Lm_list *, const char *, const char *,
    109 	    const char *);
    110 void	Dbg32_file_cntl(Lm_list *, Aliste, Aliste);
    111 void	Dbg64_file_cntl(Lm_list *, Aliste, Aliste);
    112 void	Dbg32_file_cleanup(Lm_list *, const char *, Aliste);
    113 void	Dbg64_file_cleanup(Lm_list *, const char *, Aliste);
    114 void	Dbg32_file_del_rescan(Lm_list *);
    115 void	Dbg64_file_del_rescan(Lm_list *);
    116 void	Dbg32_file_delete(Rt_map *);
    117 void	Dbg64_file_delete(Rt_map *);
    118 void	Dbg32_file_dlclose(Lm_list *, const char *, int);
    119 void	Dbg64_file_dlclose(Lm_list *, const char *, int);
    120 void	Dbg32_file_dldump(Rt_map *, const char *, int);
    121 void	Dbg64_file_dldump(Rt_map *, const char *, int);
    122 void	Dbg32_file_dlopen(Rt_map *, const char *, int *, int);
    123 void	Dbg64_file_dlopen(Rt_map *, const char *, int *, int);
    124 void	Dbg32_file_elf(Lm_list *, const char *, Addr, size_t, const char *,
    125 	    Aliste);
    126 void	Dbg64_file_elf(Lm_list *, const char *, Addr, size_t, const char *,
    127 	    Aliste);
    128 void	Dbg32_file_filtee(Lm_list *, const char *, const char *, int);
    129 void	Dbg64_file_filtee(Lm_list *, const char *, const char *, int);
    130 void	Dbg32_file_filter(Lm_list *, const char *, const char *, int);
    131 void	Dbg64_file_filter(Lm_list *, const char *, const char *, int);
    132 void	Dbg64_file_fixname(Lm_list *, const char *, const char *);
    133 void	Dbg32_file_fixname(Lm_list *, const char *, const char *);
    134 void	Dbg32_file_hdl_action(Grp_hdl *, Rt_map *, int, uint_t);
    135 void	Dbg64_file_hdl_action(Grp_hdl *, Rt_map *, int, uint_t);
    136 void	Dbg32_file_hdl_collect(Grp_hdl *, const char *);
    137 void	Dbg64_file_hdl_collect(Grp_hdl *, const char *);
    138 void	Dbg32_file_hdl_title(int);
    139 void	Dbg64_file_hdl_title(int);
    140 void	Dbg64_file_lazyload(Rt_map *, const char *, const char *);
    141 void	Dbg32_file_lazyload(Rt_map *, const char *, const char *);
    142 void	Dbg32_file_ldso(Rt_map *, char **, auxv_t *, const char *, Aliste);
    143 void	Dbg64_file_ldso(Rt_map *, char **, auxv_t *, const char *, Aliste);
    144 void	Dbg32_file_mmapobj(Lm_list *, const char *, mmapobj_result_t *, uint_t);
    145 void	Dbg64_file_mmapobj(Lm_list *, const char *, mmapobj_result_t *, uint_t);
    146 void	Dbg32_file_mode_promote(Rt_map *, int);
    147 void	Dbg64_file_mode_promote(Rt_map *, int);
    148 void	Dbg32_file_modified(Lm_list *, const char *, const char *, const char *,
    149 	    int, int, Elf *, Elf *);
    150 void	Dbg64_file_modified(Lm_list *, const char *, const char *, const char *,
    151 	    int, int, Elf *, Elf *);
    152 void	Dbg32_file_needed(Rt_map *, const char *);
    153 void	Dbg64_file_needed(Rt_map *, const char *);
    154 void	Dbg32_file_output(Ofl_desc *);
    155 void	Dbg64_file_output64(Ofl_desc *);
    156 void	Dbg32_file_preload(Lm_list *, const char *);
    157 void	Dbg64_file_preload(Lm_list *, const char *);
    158 void	Dbg32_file_prot(Rt_map *, int);
    159 void	Dbg64_file_prot(Rt_map *, int);
    160 void	Dbg32_file_rejected(Lm_list *, Rej_desc *, Elf32_Half);
    161 void	Dbg64_file_rejected(Lm_list *, Rej_desc *, Elf32_Half);
    162 void	Dbg32_file_reuse(Lm_list *, const char *, const char *);
    163 void	Dbg64_file_reuse(Lm_list *, const char *, const char *);
    164 void	Dbg32_file_skip(Lm_list *, const char *, const char *);
    165 void	Dbg64_file_skip(Lm_list *, const char *, const char *);
    166 
    167 void	Dbg32_got_display(Ofl_desc *, Elf32_Off, int,
    168 	    Elf32_Word, size_t m_got_entsize);
    169 void	Dbg64_got_display(Ofl_desc *, Elf64_Off, int,
    170 	    Elf64_Word, size_t m_got_entsize);
    171 
    172 void	Dbg32_libs_audit(Lm_list *, const char *, const char *);
    173 void	Dbg64_libs_audit(Lm_list *, const char *, const char *);
    174 void	Dbg32_libs_find(Lm_list *, const char *);
    175 void	Dbg64_libs_find(Lm_list *, const char *);
    176 void	Dbg32_libs_found(Lm_list *, const char *, int);
    177 void	Dbg64_libs_found(Lm_list *, const char *, int);
    178 void	Dbg32_libs_insecure(Lm_list *, const char *, int);
    179 void	Dbg64_libs_insecure(Lm_list *, const char *, int);
    180 void	Dbg32_libs_init(Lm_list *, APlist *, APlist *);
    181 void	Dbg64_libs_init(Lm_list *, APlist *, APlist *);
    182 void	Dbg32_libs_l(Lm_list *, const char *, const char *);
    183 void	Dbg64_libs_l(Lm_list *, const char *, const char *);
    184 void	Dbg32_libs_path(Lm_list *, const char *, uint_t, const char *);
    185 void	Dbg64_libs_path(Lm_list *, const char *, uint_t, const char *);
    186 void	Dbg32_libs_req(Lm_list *, const char *, const char *, const char *);
    187 void	Dbg64_libs_req(Lm_list *, const char *, const char *, const char *);
    188 void	Dbg32_libs_update(Lm_list *, APlist *, APlist *);
    189 void	Dbg64_libs_update(Lm_list *, APlist *, APlist *);
    190 void	Dbg32_libs_yp(Lm_list *, const char *);
    191 void	Dbg64_libs_yp(Lm_list *, const char *);
    192 void	Dbg32_libs_ylu(Lm_list *, const char *, const char *, int);
    193 void	Dbg64_libs_ylu(Lm_list *, const char *, const char *, int);
    194 
    195 void	Dbg32_map_dash(Lm_list *, const char *);
    196 void	Dbg64_map_dash(Lm_list *, const char *);
    197 void	Dbg32_map_ent(Lm_list *, Boolean, Ent_desc *, Ofl_desc *);
    198 void	Dbg64_map_ent(Lm_list *, Boolean, Ent_desc *, Ofl_desc *);
    199 void	Dbg32_map_parse(Lm_list *, const char *);
    200 void	Dbg64_map_parse(Lm_list *, const char *);
    201 void	Dbg32_map_pipe(Lm_list *, Sg_desc *, const char *, Elf32_Word);
    202 void	Dbg64_map_pipe(Lm_list *, Sg_desc *, const char *, Elf64_Word);
    203 void	Dbg32_map_set_atsign(Boolean);
    204 void	Dbg64_map_set_atsign(Boolean);
    205 void	Dbg32_map_seg(Ofl_desc *, int, Sg_desc *);
    206 void	Dbg64_map_seg(Ofl_desc *, int, Sg_desc *);
    207 void	Dbg32_map_set_equal(Boolean);
    208 void	Dbg64_map_set_equal(Boolean);
    209 void	Dbg32_map_size_new(Lm_list *, const char *);
    210 void	Dbg64_map_size_new(Lm_list *, const char *);
    211 void	Dbg32_map_size_old(Ofl_desc *, Sym_desc *);
    212 void	Dbg64_map_size_old(Ofl_desc *, Sym_desc *);
    213 void	Dbg32_map_sort(Lm_list *);
    214 void	Dbg64_map_sort(Lm_list *);
    215 void	Dbg32_map_sort_seg(Lm_list *, Sg_desc *, int);
    216 void	Dbg64_map_sort_seg(Lm_list *, Sg_desc *, int);
    217 void	Dbg32_map_symbol(Ofl_desc *, Sym_desc *);
    218 void	Dbg64_map_symbol(Ofl_desc *, Sym_desc *);
    219 void	Dbg32_map_version(Lm_list *, const char *, const char *, int);
    220 void	Dbg64_map_version(Lm_list *, const char *, const char *, int);
    221 
    222 void	Dbg32_move_adjexpandreloc(Lm_list *, Elf32_Word, const char *);
    223 void	Dbg64_move_adjexpandreloc(Lm_list *, Elf64_Xword, const char *);
    224 void	Dbg32_move_adjmovereloc(Lm_list *, Elf32_Word, Elf32_Word,
    225 	    const char *);
    226 void	Dbg64_move_adjmovereloc(Lm_list *, Elf64_Xword, Elf64_Xword,
    227 	    const char *);
    228 void	Dbg32_move_bad(Lm_list *, ulong_t, const char *, Addr);
    229 void	Dbg64_move_bad(Lm_list *, ulong_t, const char *, Addr);
    230 void	Dbg32_move_data(Rt_map *);
    231 void	Dbg64_move_data(Rt_map *);
    232 void	Dbg32_move_entry1(Lm_list *, int, Move *, Sym_desc *);
    233 void	Dbg64_move_entry1(Lm_list *, int, Move *, Sym_desc *);
    234 void	Dbg32_move_entry2(Lm_list *, Elf32_Move *, Elf32_Word, const char *);
    235 void	Dbg64_move_entry2(Lm_list *, Elf64_Move *, Elf64_Word, const char *);
    236 void	Dbg32_move_expand(Lm_list *, Elf32_Move *, Elf32_Addr);
    237 void	Dbg64_move_expand(Lm_list *, Elf64_Move *, Elf64_Addr);
    238 void	Dbg32_move_input(Lm_list *, const char *);
    239 void	Dbg64_move_input(Lm_list *, const char *);
    240 void	Dbg32_move_outmove(Lm_list *, const char *);
    241 void	Dbg64_move_outmove(Lm_list *, const char *);
    242 void	Dbg32_move_outsctadj(Lm_list *, Sym_desc *);
    243 void	Dbg64_move_outsctadj(Lm_list *, Sym_desc *);
    244 void	Dbg32_move_parexpn(Lm_list *, const char *, const char *);
    245 void	Dbg64_move_parexpn(Lm_list *, const char *, const char *);
    246 
    247 void	Dbg32_reloc_apply_reg(Lm_list *, int, Elf32_Half, Elf32_Word,
    248 	    Elf32_Word);
    249 void	Dbg64_reloc_apply_reg(Lm_list *, int, Elf64_Half, Elf64_Xword,
    250 	    Elf64_Xword);
    251 void	Dbg32_reloc_apply_val(Lm_list *, int, Elf32_Word, Elf32_Word);
    252 void	Dbg64_reloc_apply_val(Lm_list *, int, Elf64_Xword, Elf64_Xword);
    253 void	Dbg32_reloc_ars_entry(Lm_list *, int, Elf32_Word, Elf32_Half, Rel_desc *);
    254 void	Dbg64_reloc_ars_entry(Lm_list *, int, Elf64_Word, Elf64_Half, Rel_desc *);
    255 void	Dbg32_reloc_copy(Rt_map *, Rt_map *, const char *, int);
    256 void	Dbg64_reloc_copy(Rt_map *, Rt_map *, const char *, int);
    257 void	Dbg32_reloc_discard(Lm_list *, Elf32_Half, Rel_desc *);
    258 void	Dbg64_reloc_discard(Lm_list *, Elf64_Half, Rel_desc *);
    259 void	Dbg32_reloc_doact(Lm_list *, int, Elf32_Half, Elf32_Word, Elf32_Word,
    260 	    Elf32_Word, Elf32_Word, const char *, Os_desc *);
    261 void	Dbg64_reloc_doact(Lm_list *, int, Elf64_Half, Elf64_Word, Elf64_Word,
    262 	    Elf64_Xword, Elf64_Xword, const char *, Os_desc *);
    263 void	Dbg32_reloc_doact_title(Lm_list *);
    264 void	Dbg64_reloc_doact_title(Lm_list *);
    265 void	Dbg32_reloc_dooutrel(Lm_list *, Elf32_Word);
    266 void	Dbg64_reloc_dooutrel(Lm_list *, Elf64_Word);
    267 void	Dbg32_reloc_entry(Lm_list *, const char *, Elf32_Half, Elf32_Word,
    268 	    void *, const char *, const char *, const char *);
    269 void	Dbg64_reloc_entry(Lm_list *, const char *, Elf64_Half, Elf64_Word,
    270 	    void *, const char *, const char *, const char *);
    271 void	Dbg32_reloc_error(Lm_list *, int, Elf32_Half, Elf32_Word, void *,
    272 	    const char *);
    273 void	Dbg64_reloc_error(Lm_list *, int, Elf64_Half, Elf64_Word, void *,
    274 	    const char *);
    275 void	Dbg32_reloc_generate(Lm_list *, Os_desc *, Elf32_Word);
    276 void	Dbg64_reloc_generate(Lm_list *, Os_desc *, Elf64_Word);
    277 void	Dbg32_reloc_in(Lm_list *, int, Elf32_Half, Elf32_Word, void *,
    278 	    const char *, Elf32_Word, const char *);
    279 void	Dbg64_reloc_in(Lm_list *, int, Elf64_Half, Elf64_Word, void *,
    280 	    const char *, Elf64_Word, const char *);
    281 void	Dbg32_reloc_ors_entry(Lm_list *, int, Elf32_Word, Elf32_Half, Rel_desc *);
    282 void	Dbg64_reloc_ors_entry(Lm_list *, int, Elf64_Word, Elf64_Half, Rel_desc *);
    283 void	Dbg32_reloc_out(Ofl_desc *, int, Elf32_Word, void *, const char *,
    284 	    const char *);
    285 void	Dbg64_reloc_out(Ofl_desc *, int, Elf64_Word, void *, const char *,
    286 	    const char *);
    287 void	Dbg32_reloc_proc(Lm_list *, Os_desc *, Is_desc *, Is_desc *);
    288 void	Dbg64_reloc_proc(Lm_list *, Os_desc *, Is_desc *, Is_desc *);
    289 void	Dbg32_reloc_run(Rt_map *, uint_t, int, int);
    290 void	Dbg64_reloc_run(Rt_map *, uint_t, int, int);
    291 void	Dbg32_reloc_transition(Lm_list *, Elf32_Half, Elf32_Word, Rel_desc *);
    292 void	Dbg64_reloc_transition(Lm_list *, Elf64_Half, Elf64_Word, Rel_desc *);
    293 
    294 void	Dbg32_sec_added(Lm_list *, Os_desc *, Sg_desc *);
    295 void	Dbg64_sec_added(Lm_list *, Os_desc *, Sg_desc *);
    296 void	Dbg32_sec_backing(Lm_list *);
    297 void	Dbg64_sec_backing(Lm_list *);
    298 void	Dbg32_sec_created(Lm_list *, Os_desc *, Sg_desc *);
    299 void	Dbg64_sec_created(Lm_list *, Os_desc *, Sg_desc *);
    300 void	Dbg32_sec_discarded(Lm_list *, Is_desc *, Is_desc *);
    301 void	Dbg64_sec_discarded(Lm_list *, Is_desc *, Is_desc *);
    302 void	Dbg32_sec_group(Lm_list *, Is_desc *, Group_desc *);
    303 void	Dbg64_sec_group(Lm_list *, Is_desc *, Group_desc *);
    304 void	Dbg32_sec_gnu_comdat(Lm_list *, Is_desc *, Boolean, Boolean);
    305 void	Dbg64_sec_gnu_comdat(Lm_list *, Is_desc *, Boolean, Boolean);
    306 void	Dbg32_sec_in(Lm_list *, Is_desc *);
    307 void	Dbg64_sec_in(Lm_list *, Is_desc *);
    308 void	Dbg32_sec_order_error(Lm_list *, Ifl_desc *, Elf32_Word, int);
    309 void	Dbg64_sec_order_error(Lm_list *, Ifl_desc *, Elf64_Word, int);
    310 void	Dbg32_sec_order_list(Ofl_desc *, int);
    311 void	Dbg64_sec_order_list(Ofl_desc *, int);
    312 void	Dbg32_sec_redirected(Lm_list *, Is_desc *, const char *);
    313 void	Dbg64_sec_redirected(Lm_list *, Is_desc *, const char *);
    314 void	Dbg32_sec_strtab(Lm_list *, Os_desc *, Str_tbl *);
    315 void	Dbg64_sec_strtab(Lm_list *, Os_desc *, Str_tbl *);
    316 
    317 void	Dbg32_seg_desc_entry(Lm_list *, uchar_t, Elf32_Half, int, Sg_desc *);
    318 void	Dbg64_seg_desc_entry(Lm_list *, uchar_t, Elf64_Half, int, Sg_desc *);
    319 void	Dbg32_seg_entry(Ofl_desc *, int, Sg_desc *);
    320 void	Dbg64_seg_entry(Ofl_desc *, int, Sg_desc *);
    321 void	Dbg32_seg_list(Lm_list *, uchar_t, Elf32_Half, APlist *);
    322 void	Dbg64_seg_list(Lm_list *, uchar_t, Elf64_Half, APlist *);
    323 void	Dbg32_seg_os(Ofl_desc *, Os_desc *, int);
    324 void	Dbg64_seg_os(Ofl_desc *, Os_desc *, int);
    325 void    Dbg32_seg_title(Lm_list *);
    326 void    Dbg64_seg_title(Lm_list *);
    327 
    328 void	Dbg32_shdr_modified(Lm_list *, const char *, uchar_t, Half,
    329 	    Elf32_Word, Shdr *, Shdr *, const char *);
    330 void	Dbg64_shdr_modified(Lm_list *, const char *, uchar_t, Half,
    331 	    Elf64_Word, Shdr *, Shdr *, const char *);
    332 
    333 void	Dbg32_statistics_ar(Ofl_desc *);
    334 void	Dbg64_statistics_ar(Ofl_desc *);
    335 void	Dbg32_statistics_ld(Ofl_desc *);
    336 void	Dbg64_statistics_ld(Ofl_desc *);
    337 
    338 void	Dbg32_support_action(Lm_list *, const char *, const char *, Support_ndx,
    339 	    const char *);
    340 void	Dbg64_support_action(Lm_list *, const char *, const char *, Support_ndx,
    341 	    const char *);
    342 void	Dbg32_support_load(Lm_list *, const char *, const char *);
    343 void	Dbg64_support_load(Lm_list *, const char *, const char *);
    344 void	Dbg32_support_req(Lm_list *, const char *, int);
    345 void	Dbg64_support_req(Lm_list *, const char *, int);
    346 
    347 void	Dbg32_syminfo_entry(Lm_list *, Elf32_Word, Syminfo *, Sym *, const char *,
    348 	    Dyn *);
    349 void	Dbg64_syminfo_entry(Lm_list *, Elf64_Word, Syminfo *, Sym *, const char *,
    350 	    Dyn *);
    351 void	Dbg32_syminfo_title(Lm_list *);
    352 void	Dbg64_syminfo_title(Lm_list *);
    353 
    354 void	Dbg32_syms_ar_checking(Lm_list *, Xword, Elf_Arsym *, const char *);
    355 void	Dbg64_syms_ar_checking(Lm_list *, Xword, Elf_Arsym *, const char *);
    356 void	Dbg32_syms_ar_entry(Lm_list *, Xword, Elf_Arsym *);
    357 void	Dbg64_syms_ar_entry(Lm_list *, Xword, Elf_Arsym *);
    358 void	Dbg32_syms_ar_resolve(Lm_list *, Xword, Elf_Arsym *, const char *, int);
    359 void	Dbg64_syms_ar_resolve(Lm_list *, Xword, Elf_Arsym *, const char *, int);
    360 void	Dbg32_syms_ar_title(Lm_list *, const char *, int);
    361 void	Dbg64_syms_ar_title(Lm_list *, const char *, int);
    362 void	Dbg32_syms_created(Lm_list *, const char *);
    363 void	Dbg64_syms_created(Lm_list *, const char *);
    364 void	Dbg32_syms_discarded(Lm_list *, Sym_desc *);
    365 void	Dbg64_syms_discarded(Lm_list *, Sym_desc *);
    366 void	Dbg32_syms_dlsym(Rt_map *, const char *, int *, const char *, int);
    367 void	Dbg64_syms_dlsym(Rt_map *, const char *, int *, const char *, int);
    368 void	Dbg32_syms_entered(Ofl_desc *, Sym *, Sym_desc *);
    369 void	Dbg64_syms_entered(Ofl_desc *, Sym *, Sym_desc *);
    370 void	Dbg32_syms_entry(Lm_list *, Elf32_Word, Sym_desc *);
    371 void	Dbg64_syms_entry(Lm_list *, Elf64_Word, Sym_desc *);
    372 void	Dbg32_syms_global(Lm_list *, Elf32_Word, const char *);
    373 void	Dbg64_syms_global(Lm_list *, Elf64_Word, const char *);
    374 void	Dbg32_syms_ignore(Ofl_desc *, Sym_desc *);
    375 void	Dbg64_syms_ignore(Ofl_desc *, Sym_desc *);
    376 void	Dbg32_syms_lazy_rescan(Lm_list *, const char *);
    377 void	Dbg64_syms_lazy_rescan(Lm_list *, const char *);
    378 void	Dbg32_syms_lookup(Rt_map *, const char *, const char *);
    379 void	Dbg64_syms_lookup(Rt_map *, const char *, const char *);
    380 void	Dbg32_syms_lookup_aout(Lm_list *, const char *);
    381 void	Dbg32_syms_new(Ofl_desc *, Sym *, Sym_desc *);
    382 void	Dbg64_syms_new(Ofl_desc *, Sym *, Sym_desc *);
    383 void	Dbg32_syms_old(Ofl_desc *, Sym_desc *);
    384 void	Dbg64_syms_old(Ofl_desc *, Sym_desc *);
    385 void	Dbg32_syms_process(Lm_list *, Ifl_desc *);
    386 void	Dbg64_syms_process(Lm_list *, Ifl_desc *);
    387 void	Dbg32_syms_reduce(Ofl_desc *, int, Sym_desc *, int, const char *);
    388 void	Dbg64_syms_reduce(Ofl_desc *, int, Sym_desc *, int, const char *);
    389 void	Dbg32_syms_reloc(Ofl_desc *, Sym_desc *);
    390 void	Dbg64_syms_reloc(Ofl_desc *, Sym_desc *);
    391 void	Dbg32_syms_resolved(Ofl_desc *, Sym_desc *);
    392 void	Dbg64_syms_resolved(Ofl_desc *, Sym_desc *);
    393 void	Dbg32_syms_resolving(Ofl_desc *, Elf32_Word, const char *, int, int,
    394 	    Sym *, Sym *, Sym_desc *, Ifl_desc *);
    395 void	Dbg64_syms_resolving(Ofl_desc *, Elf64_Word, const char *, int, int,
    396 	    Sym *, Sym *, Sym_desc *, Ifl_desc *);
    397 void	Dbg32_syms_sec_entry(Lm_list *, Elf32_Word, Sg_desc *, Os_desc *);
    398 void	Dbg64_syms_sec_entry(Lm_list *, Elf64_Word, Sg_desc *, Os_desc *);
    399 void	Dbg32_syms_sec_title(Lm_list *);
    400 void	Dbg64_syms_sec_title(Lm_list *);
    401 void	Dbg32_syms_spec_title(Lm_list *);
    402 void	Dbg64_syms_spec_title(Lm_list *);
    403 void	Dbg32_syms_updated(Ofl_desc *, Sym_desc *, const char *);
    404 void	Dbg64_syms_updated(Ofl_desc *, Sym_desc *, const char *);
    405 void	Dbg32_syms_up_title(Lm_list *);
    406 void	Dbg64_syms_up_title(Lm_list *);
    407 void	Dbg32_syms_wrap(Lm_list *, Elf32_Word, const char *, const char *);
    408 void	Dbg64_syms_wrap(Lm_list *, Elf64_Word, const char *, const char *);
    409 
    410 void	Dbg32_util_broadcast(Rt_map *);
    411 void	Dbg64_util_broadcast(Rt_map *);
    412 void	Dbg32_util_call_array(Rt_map *, void *, int, Elf32_Word);
    413 void	Dbg64_util_call_array(Rt_map *, void *, int, Elf64_Word);
    414 void	Dbg32_util_call_fini(Rt_map *);
    415 void	Dbg64_util_call_fini(Rt_map *);
    416 void	Dbg32_util_call_init(Rt_map *, int);
    417 void	Dbg64_util_call_init(Rt_map *, int);
    418 void	Dbg32_util_call_main(Rt_map *);
    419 void	Dbg64_util_call_main(Rt_map *);
    420 void	Dbg32_util_collect(Rt_map *, int, int);
    421 void	Dbg64_util_collect(Rt_map *, int, int);
    422 void	Dbg32_util_dbnotify(Lm_list *, rd_event_e, r_state_e);
    423 void	Dbg64_util_dbnotify(Lm_list *, rd_event_e, r_state_e);
    424 void	Dbg32_util_edge_in(Lm_list *, Rt_map *, uint_t, Rt_map *, int, int);
    425 void	Dbg64_util_edge_in(Lm_list *, Rt_map *, uint_t, Rt_map *, int, int);
    426 void	Dbg32_util_edge_out(Rt_map *, Rt_map *);
    427 void	Dbg64_util_edge_out(Rt_map *, Rt_map *);
    428 void	Dbg32_util_intoolate(Rt_map *);
    429 void	Dbg64_util_intoolate(Rt_map *);
    430 void    Dbg32_util_lcinterface(Rt_map *, int, char *);
    431 void    Dbg64_util_lcinterface(Rt_map *, int, char *);
    432 void	Dbg32_util_nl(Lm_list *, int);
    433 void	Dbg64_util_nl(Lm_list *, int);
    434 void	Dbg32_util_no_init(Rt_map *);
    435 void	Dbg64_util_no_init(Rt_map *);
    436 void	Dbg32_util_scc_entry(Rt_map *, uint_t);
    437 void	Dbg64_util_scc_entry(Rt_map *, uint_t);
    438 void	Dbg32_util_scc_title(Lm_list *, int);
    439 void	Dbg64_util_scc_title(Lm_list *, int);
    440 void	Dbg32_util_str(Lm_list *, const char  *);
    441 void	Dbg64_util_str(Lm_list *, const char  *);
    442 void	Dbg32_util_wait(Rt_map *, Rt_map *, int);
    443 void	Dbg64_util_wait(Rt_map *, Rt_map *, int);
    444 
    445 void	Dbg32_unused_file(Lm_list *, const char *, int, uint_t);
    446 void	Dbg64_unused_file(Lm_list *, const char *, int, uint_t);
    447 void    Dbg32_unused_lcinterface(Rt_map *, Rt_map *, int);
    448 void    Dbg64_unused_lcinterface(Rt_map *, Rt_map *, int);
    449 void	Dbg32_unused_path(Lm_list *, const char *, uint_t, uint_t,
    450 	    const char *);
    451 void	Dbg64_unused_path(Lm_list *, const char *, uint_t, uint_t,
    452 	    const char *);
    453 void	Dbg32_unused_sec(Lm_list *, Is_desc *);
    454 void	Dbg64_unused_sec(Lm_list *, Is_desc *);
    455 void	Dbg32_unused_unref(Rt_map *, const char *);
    456 void	Dbg64_unused_unref(Rt_map *, const char *);
    457 
    458 void	Dbg32_ver_need_entry(Lm_list *, Half, const char *, const char *);
    459 void	Dbg64_ver_need_entry(Lm_list *, Half, const char *, const char *);
    460 void	Dbg32_ver_need_title(Lm_list *, const char *);
    461 void	Dbg64_ver_need_title(Lm_list *, const char *);
    462 
    463 const char *Elf_demangle_name(const char *);
    464 
    465 void Elf_syminfo_entry(Lm_list *, Word, Syminfo *, const char *, const char *);
    466 void Elf_syminfo_title(Lm_list *);
    467 void Elf_ver_def_title(Lm_list *);
    468 void Elf_ver_need_title(Lm_list *, int);
    469 void Elf_ver_line_1(Lm_list *, const char *, const char *, const char *,
    470     const char *);
    471 void Elf_ver_line_2(Lm_list *, const char *, const char *);
    472 void Elf_ver_line_3(Lm_list *, const char *, const char *, const char *);
    473 void Elf_ver_line_4(Lm_list *, const char *);
    474 void Elf_ver_line_5(Lm_list *, const char *, const char *);
    475 
    476 void Elf64_cap_entry(Lm_list *, Elf64_Cap *, int ndx, Elf64_Half);
    477 void Elf32_cap_entry(Lm_list *, Elf32_Cap *, int ndx, Elf32_Half);
    478 void Elf64_cap_title(Lm_list *);
    479 void Elf32_cap_title(Lm_list *);
    480 
    481 void Elf64_dyn_entry(Lm_list *, Elf64_Dyn *, int, const char *, uchar_t,
    482     Elf64_Half);
    483 void Elf32_dyn_entry(Lm_list *, Elf32_Dyn *, int, const char *, uchar_t,
    484     Elf32_Half);
    485 void Elf64_dyn_null_entry(Lm_list *, Elf64_Dyn *, int, int);
    486 void Elf32_dyn_null_entry(Lm_list *, Elf32_Dyn *, int, int);
    487 void Elf64_dyn_title(Lm_list *);
    488 void Elf32_dyn_title(Lm_list *);
    489 
    490 void Elf64_ehdr(Lm_list *, Elf64_Ehdr *, Elf64_Shdr *);
    491 void Elf32_ehdr(Lm_list *, Elf32_Ehdr *, Elf32_Shdr *);
    492 
    493 void Elf64_got_entry(Lm_list *, Elf64_Sword, Elf64_Addr, Elf64_Xword,
    494     Elf64_Half, uchar_t, uchar_t, Elf64_Word, void *, const char *);
    495 void Elf32_got_entry(Lm_list *, Elf32_Sword, Elf32_Addr, Elf32_Word,
    496     Elf32_Half, uchar_t, uchar_t, Elf32_Word, void *, const char *);
    497 void Elf64_got_title(Lm_list *);
    498 void Elf32_got_title(Lm_list *);
    499 
    500 void Elf64_phdr(Lm_list *, uchar_t, Elf64_Half, Elf64_Phdr *);
    501 void Elf32_phdr(Lm_list *, uchar_t, Elf32_Half, Elf32_Phdr *);
    502 
    503 void Elf64_reloc_apply_reg(Lm_list *, int, Elf64_Half, Elf64_Xword,
    504     Elf64_Xword);
    505 void Elf32_reloc_apply_reg(Lm_list *, int, Elf32_Half, Elf32_Word,
    506     Elf32_Word);
    507 void Elf64_reloc_apply_val(Lm_list *, int, Elf64_Xword, Elf64_Xword);
    508 void Elf32_reloc_apply_val(Lm_list *, int, Elf32_Word, Elf32_Word);
    509 void Elf64_reloc_entry_1(Lm_list *, int, const char *, Elf64_Half, Word, void *,
    510     const char *, const char *, const char *);
    511 void Elf32_reloc_entry_1(Lm_list *, int, const char *, Elf32_Half, Word, void *,
    512     const char *, const char *, const char *);
    513 void Elf64_reloc_entry_2(Lm_list *, int, const char *, Word, const char *,
    514     Elf64_Addr, Elf64_Sxword, const char *, const char *, const char *);
    515 void Elf32_reloc_entry_2(Lm_list *, int, const char *, Word, const char *,
    516     Elf32_Addr, Elf32_Sword, const char *, const char *, const char *);
    517 void Elf64_reloc_title(Lm_list *, int, Word);
    518 void Elf32_reloc_title(Lm_list *, int, Word);
    519 
    520 void Elf64_shdr(Lm_list *, uchar_t, Elf64_Half, Elf64_Shdr *);
    521 void Elf32_shdr(Lm_list *, uchar_t, Elf32_Half, Elf32_Shdr *);
    522 
    523 void Elf64_syms_table_entry(Lm_list *, int, const char *, uchar_t, Elf64_Half,
    524     Elf64_Sym *, Elf64_Versym, int, const char *, const char *);
    525 void Elf32_syms_table_entry(Lm_list *, int, const char *, uchar_t, Elf32_Half,
    526     Elf32_Sym *, Elf32_Versym, int, const char *, const char *);
    527 void Elf64_syms_table_title(Lm_list *, int);
    528 void Elf32_syms_table_title(Lm_list *, int);
    529