xref: /illumos-gate/usr/src/cmd/sgs/liblddbg/common/syms.c (revision 56726c7e321b6e5ecb2f10215f5386016547e68c)
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
55aefb655Srie  * Common Development and Distribution License (the "License").
65aefb655Srie  * You may not use this file except in compliance with the License.
77c478bd9Sstevel@tonic-gate  *
87c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
107c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
117c478bd9Sstevel@tonic-gate  * and limitations under the License.
127c478bd9Sstevel@tonic-gate  *
137c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
147c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
167c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
177c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
187c478bd9Sstevel@tonic-gate  *
197c478bd9Sstevel@tonic-gate  * CDDL HEADER END
207c478bd9Sstevel@tonic-gate  */
215aefb655Srie 
227c478bd9Sstevel@tonic-gate /*
23dc0f59e5SAli Bahrami  * Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved.
24*56726c7eSRobert Mustacchi  * Copyright 2022 Oxide Computer Company
257c478bd9Sstevel@tonic-gate  */
267c478bd9Sstevel@tonic-gate 
277c478bd9Sstevel@tonic-gate #include	<stdio.h>
287c478bd9Sstevel@tonic-gate #include	"msg.h"
297c478bd9Sstevel@tonic-gate #include	"_debug.h"
307c478bd9Sstevel@tonic-gate #include	"libld.h"
317c478bd9Sstevel@tonic-gate 
325aefb655Srie void
Dbg_syms_lookup(Rt_map * lmp,const char * name,const char * type)335aefb655Srie Dbg_syms_lookup(Rt_map *lmp, const char *name, const char *type)
345aefb655Srie {
355aefb655Srie 	Lm_list	*lml = LIST(lmp);
365aefb655Srie 
375aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
385aefb655Srie 		return;
395aefb655Srie 
405aefb655Srie 	dbg_print(lml, MSG_INTL(MSG_SYM_LOOKUP), Dbg_demangle_name(name),
415aefb655Srie 	    NAME(lmp), type);
427c478bd9Sstevel@tonic-gate }
437c478bd9Sstevel@tonic-gate 
44*56726c7eSRobert Mustacchi static	const Msg captype[DBG_CAP_HW_3 + 1] = {
4508278a5eSRod Evans 	MSG_CAP_SYM_DEFAULT,		/* MSG_INTL(MSG_CAP_SYM_DEFAULT) */
4608278a5eSRod Evans 	MSG_CAP_SYM_USED,		/* MSG_INTL(MSG_CAP_SYM_USED) */
4708278a5eSRod Evans 	MSG_CAP_SYM_CANDIDATE,		/* MSG_INTL(MSG_CAP_SYM_CANDIDATE) */
4808278a5eSRod Evans 	MSG_CAP_SYM_REJECTED,		/* MSG_INTL(MSG_CAP_SYM_REJECTED) */
4908278a5eSRod Evans 	MSG_CAP_SYM_HW_1,		/* MSG_INTL(MSG_CAP_SYM_HW_1) */
5008278a5eSRod Evans 	MSG_CAP_SYM_SF_1,		/* MSG_INTL(MSG_CAP_SYM_SF_1) */
5108278a5eSRod Evans 	MSG_CAP_SYM_HW_2,		/* MSG_INTL(MSG_CAP_SYM_HW_2) */
5208278a5eSRod Evans 	MSG_CAP_SYM_PLAT,		/* MSG_INTL(MSG_CAP_SYM_PLAT) */
53*56726c7eSRobert Mustacchi 	MSG_CAP_SYM_MACH,		/* MSG_INTL(MSG_CAP_SYM_MACH) */
54*56726c7eSRobert Mustacchi 	MSG_CAP_SYM_HW_3		/* MSG_INTL(MSG_CAP_SYM_HW_3) */
5508278a5eSRod Evans };
5608278a5eSRod Evans 
5708278a5eSRod Evans void
Dbg_syms_cap_lookup(Rt_map * lmp,uint_t type,const char * name,uint_t ndx,Half mach,Syscapset * scapset)5808278a5eSRod Evans Dbg_syms_cap_lookup(Rt_map *lmp, uint_t type, const char *name, uint_t ndx,
5908278a5eSRod Evans     Half mach, Syscapset *scapset)
6008278a5eSRod Evans {
6108278a5eSRod Evans 	Lm_list			*lml = LIST(lmp);
6208278a5eSRod Evans 	const char		*str = NULL;
6308278a5eSRod Evans 	Conv_cap_val_buf_t	cap_val_buf;
6408278a5eSRod Evans 
6508278a5eSRod Evans 	if (DBG_NOTCLASS(DBG_C_CAP | DBG_C_SYMBOLS))
6608278a5eSRod Evans 		return;
6708278a5eSRod Evans 
6808278a5eSRod Evans 	switch (type) {
6908278a5eSRod Evans 	case DBG_CAP_HW_1:
7008278a5eSRod Evans 		str = conv_cap_val_hw1(scapset->sc_hw_1, mach, 0,
7108278a5eSRod Evans 		    &cap_val_buf.cap_val_hw1_buf);
7208278a5eSRod Evans 		break;
7308278a5eSRod Evans 	case DBG_CAP_SF_1:
7408278a5eSRod Evans 		str = conv_cap_val_sf1(scapset->sc_sf_1, mach, 0,
7508278a5eSRod Evans 		    &cap_val_buf.cap_val_sf1_buf);
7608278a5eSRod Evans 		break;
7708278a5eSRod Evans 	case DBG_CAP_HW_2:
7808278a5eSRod Evans 		str = conv_cap_val_hw2(scapset->sc_hw_2, mach, 0,
7908278a5eSRod Evans 		    &cap_val_buf.cap_val_hw2_buf);
8008278a5eSRod Evans 		break;
8108278a5eSRod Evans 	case DBG_CAP_MACH:
8208278a5eSRod Evans 		str = scapset->sc_mach;
8308278a5eSRod Evans 		break;
8408278a5eSRod Evans 	case DBG_CAP_PLAT:
8508278a5eSRod Evans 		str = scapset->sc_plat;
8608278a5eSRod Evans 		break;
87*56726c7eSRobert Mustacchi 	case DBG_CAP_HW_3:
88*56726c7eSRobert Mustacchi 		str = conv_cap_val_hw3(scapset->sc_hw_3, mach, 0,
89*56726c7eSRobert Mustacchi 		    &cap_val_buf.cap_val_hw3_buf);
90*56726c7eSRobert Mustacchi 		break;
9108278a5eSRod Evans 	}
9208278a5eSRod Evans 
9308278a5eSRod Evans 	dbg_print(lml, MSG_INTL(captype[type]), Dbg_demangle_name(name),
9408278a5eSRod Evans 	    ndx, str);
9508278a5eSRod Evans }
9608278a5eSRod Evans 
977c478bd9Sstevel@tonic-gate void
Dbg_syms_ignore_gnuver(Rt_map * lmp,const char * name,Word symndx,Versym verndx)98d840867fSab196087 Dbg_syms_ignore_gnuver(Rt_map *lmp, const char *name, Word symndx,
993b41b08bSab196087     Versym verndx)
1003b41b08bSab196087 {
1013b41b08bSab196087 	Lm_list	*lml = LIST(lmp);
1023b41b08bSab196087 
1033b41b08bSab196087 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
1043b41b08bSab196087 		return;
1053b41b08bSab196087 
106d840867fSab196087 	dbg_print(lml, MSG_INTL(MSG_SYM_IGNGNUVER), Dbg_demangle_name(name),
1073b41b08bSab196087 	    EC_WORD(symndx), EC_HALF(verndx), NAME(lmp));
1083b41b08bSab196087 }
1093b41b08bSab196087 
1103b41b08bSab196087 void
Dbg_syms_lazy_rescan(Lm_list * lml,const char * name)1115aefb655Srie Dbg_syms_lazy_rescan(Lm_list *lml, const char *name)
1125aefb655Srie {
1135aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS | DBG_C_FILES))
1145aefb655Srie 		return;
1155aefb655Srie 
1165aefb655Srie 	Dbg_util_nl(lml, DBG_NL_STD);
1175aefb655Srie 	dbg_print(lml, MSG_INTL(MSG_SYM_LAZY_RESCAN), Dbg_demangle_name(name));
1185aefb655Srie }
1195aefb655Srie 
1205aefb655Srie void
Dbg_syms_ar_title(Lm_list * lml,const char * file,Boolean again)121dc0f59e5SAli Bahrami Dbg_syms_ar_title(Lm_list *lml, const char *file, Boolean again)
1225aefb655Srie {
1235aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
1245aefb655Srie 		return;
1255aefb655Srie 
1265aefb655Srie 	dbg_print(lml, MSG_INTL(MSG_SYM_AR_FILE), file,
1275aefb655Srie 	    again ? MSG_INTL(MSG_STR_AGAIN) : MSG_ORIG(MSG_STR_EMPTY));
1285aefb655Srie }
1295aefb655Srie 
1305aefb655Srie void
Dbg_syms_ar_skip(Lm_list * lml,const char * archive,Elf_Arsym * arsym)131dc0f59e5SAli Bahrami Dbg_syms_ar_skip(Lm_list *lml, const char *archive, Elf_Arsym *arsym)
1325aefb655Srie {
1335aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
1345aefb655Srie 		return;
1355aefb655Srie 
136dc0f59e5SAli Bahrami 	dbg_print(lml, MSG_INTL(MSG_SYM_AR_SKIP), archive,
1375aefb655Srie 	    Dbg_demangle_name(arsym->as_name));
1385aefb655Srie }
1395aefb655Srie 
1405aefb655Srie void
Dbg_syms_ar_checking(Lm_list * lml,const char * fname,const char * objname,Elf_Arsym * arsym)141dc0f59e5SAli Bahrami Dbg_syms_ar_checking(Lm_list *lml, const char *fname, const char *objname,
142dc0f59e5SAli Bahrami     Elf_Arsym *arsym)
1435aefb655Srie {
1445aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
1455aefb655Srie 		return;
1465aefb655Srie 
147dc0f59e5SAli Bahrami 	dbg_print(lml, MSG_INTL(MSG_SYM_AR_CHECK), fname, objname,
148dc0f59e5SAli Bahrami 	    Dbg_demangle_name(arsym->as_name));
1495aefb655Srie }
1505aefb655Srie 
1515aefb655Srie void
Dbg_syms_ar_resolve(Lm_list * lml,const char * fname,const char * objname,Elf_Arsym * arsym)152dc0f59e5SAli Bahrami Dbg_syms_ar_resolve(Lm_list *lml, const char *fname, const char *objname,
153dc0f59e5SAli Bahrami     Elf_Arsym *arsym)
1545aefb655Srie {
1555aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
1565aefb655Srie 		return;
1575aefb655Srie 
158dc0f59e5SAli Bahrami 	dbg_print(lml, MSG_INTL(MSG_SYM_AR_RESOLVE), fname, objname,
159dc0f59e5SAli Bahrami 	    Dbg_demangle_name(arsym->as_name));
160dc0f59e5SAli Bahrami }
1615aefb655Srie 
162dc0f59e5SAli Bahrami void
Dbg_syms_ar_force(Lm_list * lml,const char * fname,const char * objname)163dc0f59e5SAli Bahrami Dbg_syms_ar_force(Lm_list *lml, const char *fname, const char *objname)
164dc0f59e5SAli Bahrami {
165dc0f59e5SAli Bahrami 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
166dc0f59e5SAli Bahrami 		return;
167dc0f59e5SAli Bahrami 
168dc0f59e5SAli Bahrami 	dbg_print(lml, MSG_INTL(MSG_SYM_AR_FORCE), fname, objname);
1695aefb655Srie }
1705aefb655Srie 
1715aefb655Srie void
Dbg_syms_spec_title(Lm_list * lml)1725aefb655Srie Dbg_syms_spec_title(Lm_list *lml)
1735aefb655Srie {
1745aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
1755aefb655Srie 		return;
1765aefb655Srie 
1775aefb655Srie 	Dbg_util_nl(lml, DBG_NL_STD);
1785aefb655Srie 	dbg_print(lml, MSG_INTL(MSG_SYM_SPECIAL));
1795aefb655Srie }
1805aefb655Srie 
1815aefb655Srie void
Dbg_syms_discarded(Lm_list * lml,Sym_desc * sdp)182a194faf8Srie Dbg_syms_discarded(Lm_list *lml, Sym_desc *sdp)
1835aefb655Srie {
184e23c41c9SAli Bahrami 	dbg_isec_name_buf_t	buf;
185e23c41c9SAli Bahrami 	char			*alloc_mem;
186a194faf8Srie 	const char		*file;
1875aefb655Srie 
188a194faf8Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS | DBG_C_UNUSED))
1895aefb655Srie 		return;
1905aefb655Srie 	if (DBG_NOTDETAIL())
1915aefb655Srie 		return;
1925aefb655Srie 
193a194faf8Srie 	if ((sdp->sd_file == NULL) || ((file = sdp->sd_file->ifl_name) == NULL))
194a194faf8Srie 		file = MSG_INTL(MSG_STR_UNKNOWN);
1955aefb655Srie 
196a194faf8Srie 	if (sdp->sd_isc) {
197a194faf8Srie 		dbg_print(lml, MSG_INTL(MSG_SYM_DISCARD_SEC),
198e23c41c9SAli Bahrami 		    Dbg_demangle_name(sdp->sd_name),
199e23c41c9SAli Bahrami 		    dbg_fmt_isec_name(sdp->sd_isc, buf, &alloc_mem), file);
200e23c41c9SAli Bahrami 		if (alloc_mem != NULL)
201e23c41c9SAli Bahrami 			free(alloc_mem);
202a194faf8Srie 	} else
203a194faf8Srie 		dbg_print(lml, MSG_INTL(MSG_SYM_DISCARD_FILE),
204a194faf8Srie 		    Dbg_demangle_name(sdp->sd_name), file);
2055aefb655Srie }
2065aefb655Srie 
2075aefb655Srie void
Dbg_syms_dup_discarded(Lm_list * lml,Word ndx,Sym_desc * sdp)20824b9abbaSab196087 Dbg_syms_dup_discarded(Lm_list *lml, Word ndx, Sym_desc *sdp)
20924b9abbaSab196087 {
21024b9abbaSab196087 	const char	*file;
21124b9abbaSab196087 
21224b9abbaSab196087 	if (DBG_NOTCLASS(DBG_C_SYMBOLS | DBG_C_UNUSED))
21324b9abbaSab196087 		return;
21424b9abbaSab196087 	if (DBG_NOTDETAIL())
21524b9abbaSab196087 		return;
21624b9abbaSab196087 
21724b9abbaSab196087 	if ((sdp->sd_file == NULL) || ((file = sdp->sd_file->ifl_name) == NULL))
21824b9abbaSab196087 		file = MSG_INTL(MSG_STR_UNKNOWN);
21924b9abbaSab196087 
22024b9abbaSab196087 	dbg_print(lml, MSG_INTL(MSG_SYM_DISCARD_DUP), EC_WORD(ndx),
22124b9abbaSab196087 	    Dbg_demangle_name(sdp->sd_name), file);
22224b9abbaSab196087 }
22324b9abbaSab196087 
22424b9abbaSab196087 void
Dbg_syms_entered(Ofl_desc * ofl,Sym * sym,Sym_desc * sdp)2255aefb655Srie Dbg_syms_entered(Ofl_desc *ofl, Sym *sym, Sym_desc *sdp)
2265aefb655Srie {
227de777a60Sab196087 	Conv_inv_buf_t	inv_buf;
2285aefb655Srie 	Lm_list		*lml = ofl->ofl_lml;
2295aefb655Srie 
2305aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
2315aefb655Srie 		return;
2325aefb655Srie 	if (DBG_NOTDETAIL())
2335aefb655Srie 		return;
2345aefb655Srie 
2355aefb655Srie 	Elf_syms_table_entry(lml, ELF_DBG_LD, MSG_INTL(MSG_STR_ENTERED),
2364f680cc6SAli Bahrami 	    ofl->ofl_dehdr->e_ident[EI_OSABI], ofl->ofl_dehdr->e_machine, sym,
237d840867fSab196087 	    sdp->sd_aux ? sdp->sd_aux->sa_overndx : 0, 0, NULL,
238de777a60Sab196087 	    conv_def_tag(sdp->sd_ref, &inv_buf));
2395aefb655Srie }
2405aefb655Srie 
2415aefb655Srie void
Dbg_syms_process(Lm_list * lml,Ifl_desc * ifl)2425aefb655Srie Dbg_syms_process(Lm_list *lml, Ifl_desc *ifl)
2435aefb655Srie {
244de777a60Sab196087 	Conv_inv_buf_t	inv_buf;
245de777a60Sab196087 
2465aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
2475aefb655Srie 		return;
2485aefb655Srie 
2495aefb655Srie 	Dbg_util_nl(lml, DBG_NL_STD);
2505aefb655Srie 	dbg_print(lml, MSG_INTL(MSG_SYM_PROCESS), ifl->ifl_name,
2514f680cc6SAli Bahrami 	    conv_ehdr_type(ifl->ifl_ehdr->e_ident[EI_OSABI],
2524f680cc6SAli Bahrami 	    ifl->ifl_ehdr->e_type, 0, &inv_buf));
2535aefb655Srie }
2545aefb655Srie 
2555aefb655Srie void
Dbg_syms_entry(Lm_list * lml,Word ndx,Sym_desc * sdp)2565aefb655Srie Dbg_syms_entry(Lm_list *lml, Word ndx, Sym_desc *sdp)
2575aefb655Srie {
2585aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
2595aefb655Srie 		return;
2605aefb655Srie 
2615aefb655Srie 	dbg_print(lml, MSG_INTL(MSG_SYM_BASIC), EC_WORD(ndx),
2625aefb655Srie 	    Dbg_demangle_name(sdp->sd_name));
2635aefb655Srie }
2645aefb655Srie 
2655aefb655Srie void
Dbg_syms_global(Lm_list * lml,Word ndx,const char * name)2665aefb655Srie Dbg_syms_global(Lm_list *lml, Word ndx, const char *name)
2675aefb655Srie {
2685aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
2695aefb655Srie 		return;
2705aefb655Srie 
2715aefb655Srie 	dbg_print(lml, MSG_INTL(MSG_SYM_ADDING), EC_WORD(ndx),
2725aefb655Srie 	    Dbg_demangle_name(name));
2735aefb655Srie }
2745aefb655Srie 
2755aefb655Srie void
Dbg_syms_cap_convert(Ofl_desc * ofl,Word ndx,const char * name,Sym * sym)27608278a5eSRod Evans Dbg_syms_cap_convert(Ofl_desc *ofl, Word ndx, const char *name, Sym *sym)
27708278a5eSRod Evans {
27808278a5eSRod Evans 	if (DBG_NOTCLASS(DBG_C_CAP | DBG_C_SYMBOLS))
27908278a5eSRod Evans 		return;
28008278a5eSRod Evans 
28108278a5eSRod Evans 	dbg_print(ofl->ofl_lml, MSG_INTL(MSG_SYM_CAP_ORIG), EC_WORD(ndx),
28208278a5eSRod Evans 	    Dbg_demangle_name(name));
28308278a5eSRod Evans 
28408278a5eSRod Evans 	if (DBG_NOTDETAIL())
28508278a5eSRod Evans 		return;
28608278a5eSRod Evans 
28708278a5eSRod Evans 	Elf_syms_table_entry(ofl->ofl_lml, ELF_DBG_LD,
28808278a5eSRod Evans 	    MSG_INTL(MSG_STR_ORIGINAL), ofl->ofl_dehdr->e_ident[EI_OSABI],
28908278a5eSRod Evans 	    ofl->ofl_dehdr->e_machine, sym, 0, 0, NULL,
29008278a5eSRod Evans 	    MSG_ORIG(MSG_STR_EMPTY));
29108278a5eSRod Evans }
29208278a5eSRod Evans 
29308278a5eSRod Evans void
Dbg_syms_cap_local(Ofl_desc * ofl,Word ndx,const char * name,Sym * sym,Sym_desc * sdp)29408278a5eSRod Evans Dbg_syms_cap_local(Ofl_desc *ofl, Word ndx, const char *name, Sym *sym,
29508278a5eSRod Evans     Sym_desc *sdp)
29608278a5eSRod Evans {
29708278a5eSRod Evans 	Conv_inv_buf_t	inv_buf;
29808278a5eSRod Evans 
29908278a5eSRod Evans 	if (DBG_NOTCLASS(DBG_C_CAP | DBG_C_SYMBOLS))
30008278a5eSRod Evans 		return;
30108278a5eSRod Evans 
30208278a5eSRod Evans 	dbg_print(ofl->ofl_lml, MSG_INTL(MSG_SYM_CAP_LOCAL), EC_WORD(ndx),
30308278a5eSRod Evans 	    Dbg_demangle_name(name));
30408278a5eSRod Evans 
30508278a5eSRod Evans 	if (DBG_NOTDETAIL())
30608278a5eSRod Evans 		return;
30708278a5eSRod Evans 
30808278a5eSRod Evans 	Elf_syms_table_entry(ofl->ofl_lml, ELF_DBG_LD,
30908278a5eSRod Evans 	    MSG_INTL(MSG_STR_ENTERED), ofl->ofl_dehdr->e_ident[EI_OSABI],
31008278a5eSRod Evans 	    ofl->ofl_dehdr->e_machine, sym,
31108278a5eSRod Evans 	    sdp->sd_aux ? sdp->sd_aux->sa_overndx : 0, 0, NULL,
31208278a5eSRod Evans 	    conv_def_tag(sdp->sd_ref, &inv_buf));
31308278a5eSRod Evans }
31408278a5eSRod Evans 
31508278a5eSRod Evans void
Dbg_syms_wrap(Lm_list * lml,Word ndx,const char * orig_name,const char * name)316cdcc71c0SAli Bahrami Dbg_syms_wrap(Lm_list *lml, Word ndx, const char *orig_name, const char *name)
317cdcc71c0SAli Bahrami {
318cdcc71c0SAli Bahrami 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
319cdcc71c0SAli Bahrami 		return;
320cdcc71c0SAli Bahrami 
321cdcc71c0SAli Bahrami 	dbg_print(lml, MSG_INTL(MSG_SYM_WRAP), EC_WORD(ndx),
322cdcc71c0SAli Bahrami 	    Dbg_demangle_name(orig_name), Dbg_demangle_name(name));
323cdcc71c0SAli Bahrami }
324cdcc71c0SAli Bahrami 
325cdcc71c0SAli Bahrami void
Dbg_syms_sec_title(Lm_list * lml)3265aefb655Srie Dbg_syms_sec_title(Lm_list *lml)
3275aefb655Srie {
3285aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
3295aefb655Srie 		return;
3305aefb655Srie 	if (DBG_NOTDETAIL())
3315aefb655Srie 		return;
3325aefb655Srie 
3335aefb655Srie 	Dbg_util_nl(lml, DBG_NL_STD);
3345aefb655Srie 	dbg_print(lml, MSG_INTL(MSG_SYM_INDEX));
3355aefb655Srie }
3365aefb655Srie 
3375aefb655Srie void
Dbg_syms_sec_entry(Lm_list * lml,Word ndx,Sg_desc * sgp,Os_desc * osp)3385aefb655Srie Dbg_syms_sec_entry(Lm_list *lml, Word ndx, Sg_desc *sgp, Os_desc *osp)
3395aefb655Srie {
3405aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
3415aefb655Srie 		return;
3425aefb655Srie 	if (DBG_NOTDETAIL())
3435aefb655Srie 		return;
3445aefb655Srie 
3455aefb655Srie 	dbg_print(lml, MSG_INTL(MSG_SYM_SECTION), EC_WORD(ndx), osp->os_name,
3465aefb655Srie 	    (*sgp->sg_name ? sgp->sg_name : MSG_INTL(MSG_STR_NULL)));
3475aefb655Srie }
3485aefb655Srie 
3495aefb655Srie void
Dbg_syms_up_title(Lm_list * lml)3505aefb655Srie Dbg_syms_up_title(Lm_list *lml)
3515aefb655Srie {
3525aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
3535aefb655Srie 		return;
3545aefb655Srie 	if (DBG_NOTDETAIL())
3555aefb655Srie 		return;
3565aefb655Srie 
3575aefb655Srie 	Dbg_util_nl(lml, DBG_NL_STD);
3585aefb655Srie 	dbg_print(lml, MSG_INTL(MSG_SYM_FINAL));
3595aefb655Srie 	Elf_syms_table_title(lml, ELF_DBG_LD);
3605aefb655Srie }
3615aefb655Srie 
3625aefb655Srie void
Dbg_syms_ignore(Ofl_desc * ofl,Sym_desc * sdp)3635aefb655Srie Dbg_syms_ignore(Ofl_desc *ofl, Sym_desc *sdp)
3645aefb655Srie {
3655aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
3665aefb655Srie 		return;
3675aefb655Srie 	if (DBG_NOTDETAIL())
3685aefb655Srie 		return;
3695aefb655Srie 
3705aefb655Srie 	Elf_syms_table_entry(ofl->ofl_lml, ELF_DBG_LD, MSG_INTL(MSG_STR_IGNORE),
3714f680cc6SAli Bahrami 	    ofl->ofl_dehdr->e_ident[EI_OSABI], ofl->ofl_dehdr->e_machine,
3724f680cc6SAli Bahrami 	    sdp->sd_sym, 0, 0, NULL, MSG_INTL(MSG_STR_UNUSED));
3735aefb655Srie }
3745aefb655Srie 
3755aefb655Srie void
Dbg_syms_old(Ofl_desc * ofl,Sym_desc * sdp)3765aefb655Srie Dbg_syms_old(Ofl_desc *ofl, Sym_desc *sdp)
3775aefb655Srie {
3785aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
3795aefb655Srie 		return;
3805aefb655Srie 	if (DBG_NOTDETAIL())
3815aefb655Srie 		return;
3825aefb655Srie 
3835aefb655Srie 	Elf_syms_table_entry(ofl->ofl_lml, ELF_DBG_LD, MSG_INTL(MSG_STR_OLD),
3844f680cc6SAli Bahrami 	    ofl->ofl_dehdr->e_ident[EI_OSABI], ofl->ofl_dehdr->e_machine,
3854f680cc6SAli Bahrami 	    sdp->sd_sym, sdp->sd_aux ? sdp->sd_aux->sa_overndx : 0,
3864f680cc6SAli Bahrami 	    0, NULL, sdp->sd_name);
3875aefb655Srie }
3885aefb655Srie 
3895aefb655Srie void
Dbg_syms_new(Ofl_desc * ofl,Sym * sym,Sym_desc * sdp)3905aefb655Srie Dbg_syms_new(Ofl_desc *ofl, Sym *sym, Sym_desc *sdp)
3915aefb655Srie {
392de777a60Sab196087 	Conv_inv_buf_t	inv_buf;
393de777a60Sab196087 
3945aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
3955aefb655Srie 		return;
3965aefb655Srie 	if (DBG_NOTDETAIL())
3975aefb655Srie 		return;
3985aefb655Srie 
3995aefb655Srie 	Elf_syms_table_entry(ofl->ofl_lml, ELF_DBG_LD, MSG_INTL(MSG_STR_NEW),
4004f680cc6SAli Bahrami 	    ofl->ofl_dehdr->e_ident[EI_OSABI], ofl->ofl_dehdr->e_machine, sym,
401d840867fSab196087 	    sdp->sd_aux ? sdp->sd_aux->sa_overndx : 0, 0, NULL,
402de777a60Sab196087 	    conv_def_tag(sdp->sd_ref, &inv_buf));
4035aefb655Srie }
4045aefb655Srie 
4055aefb655Srie void
Dbg_syms_updated(Ofl_desc * ofl,Sym_desc * sdp,const char * name)4065aefb655Srie Dbg_syms_updated(Ofl_desc *ofl, Sym_desc *sdp, const char *name)
4075aefb655Srie {
408de777a60Sab196087 	Conv_inv_buf_t	inv_buf;
4095aefb655Srie 	Lm_list		*lml = ofl->ofl_lml;
4105aefb655Srie 
4115aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
4125aefb655Srie 		return;
4135aefb655Srie 
4145aefb655Srie 	dbg_print(lml, MSG_INTL(MSG_SYM_UPDATE), name);
4155aefb655Srie 
4165aefb655Srie 	if (DBG_NOTDETAIL())
4175aefb655Srie 		return;
4185aefb655Srie 
4195aefb655Srie 	Elf_syms_table_entry(ofl->ofl_lml, ELF_DBG_LD, MSG_ORIG(MSG_STR_EMPTY),
4204f680cc6SAli Bahrami 	    ofl->ofl_dehdr->e_ident[EI_OSABI], ofl->ofl_dehdr->e_machine,
4214f680cc6SAli Bahrami 	    sdp->sd_sym, sdp->sd_aux ? sdp->sd_aux->sa_overndx : 0, 0, NULL,
422de777a60Sab196087 	    conv_def_tag(sdp->sd_ref, &inv_buf));
4235aefb655Srie }
4245aefb655Srie 
4255aefb655Srie void
Dbg_syms_created(Lm_list * lml,const char * name)4265aefb655Srie Dbg_syms_created(Lm_list *lml, const char *name)
4275aefb655Srie {
4285aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
4295aefb655Srie 		return;
4305aefb655Srie 
4315aefb655Srie 	dbg_print(lml, MSG_INTL(MSG_SYM_CREATE), Dbg_demangle_name(name));
4325aefb655Srie }
4335aefb655Srie 
4345aefb655Srie void
Dbg_syms_resolving(Ofl_desc * ofl,Word ndx,const char * name,int row,int col,Sym * osym,Sym * nsym,Sym_desc * sdp,Ifl_desc * ifl)4355aefb655Srie Dbg_syms_resolving(Ofl_desc *ofl, Word ndx, const char *name, int row,
4365aefb655Srie     int col, Sym *osym, Sym *nsym, Sym_desc *sdp, Ifl_desc *ifl)
4375aefb655Srie {
4385aefb655Srie 	Lm_list	*lml = ofl->ofl_lml;
4394f680cc6SAli Bahrami 	uchar_t	osabi = ofl->ofl_dehdr->e_ident[EI_OSABI];
4405aefb655Srie 	Half	mach = ofl->ofl_dehdr->e_machine;
4415aefb655Srie 
4425aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
4435aefb655Srie 		return;
4445aefb655Srie 
4455aefb655Srie 	dbg_print(lml, MSG_INTL(MSG_SYM_RESOLVING), EC_WORD(ndx),
4465aefb655Srie 	    Dbg_demangle_name(name), row, col);
4475aefb655Srie 
4485aefb655Srie 	if (DBG_NOTDETAIL())
4495aefb655Srie 		return;
4505aefb655Srie 
4515aefb655Srie 	Elf_syms_table_entry(ofl->ofl_lml, ELF_DBG_LD, MSG_INTL(MSG_STR_OLD),
4524f680cc6SAli Bahrami 	    osabi, mach, osym, sdp->sd_aux ? sdp->sd_aux->sa_overndx : 0,
4534f680cc6SAli Bahrami 	    0, NULL, sdp->sd_file->ifl_name);
4545aefb655Srie 
4555aefb655Srie 	Elf_syms_table_entry(ofl->ofl_lml, ELF_DBG_LD, MSG_INTL(MSG_STR_NEW),
4564f680cc6SAli Bahrami 	    osabi, mach, nsym, 0, 0, NULL, ifl->ifl_name);
4575aefb655Srie }
4585aefb655Srie 
4595aefb655Srie void
Dbg_syms_resolved(Ofl_desc * ofl,Sym_desc * sdp)4605aefb655Srie Dbg_syms_resolved(Ofl_desc *ofl, Sym_desc *sdp)
4615aefb655Srie {
462de777a60Sab196087 	Conv_inv_buf_t	inv_buf;
463de777a60Sab196087 
4645aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
4655aefb655Srie 		return;
4665aefb655Srie 	if (DBG_NOTDETAIL())
4675aefb655Srie 		return;
4685aefb655Srie 
4695aefb655Srie 	Elf_syms_table_entry(ofl->ofl_lml, ELF_DBG_LD,
4704f680cc6SAli Bahrami 	    MSG_INTL(MSG_STR_RESOLVED), ofl->ofl_dehdr->e_ident[EI_OSABI],
4714f680cc6SAli Bahrami 	    ofl->ofl_dehdr->e_machine, sdp->sd_sym,
472d840867fSab196087 	    sdp->sd_aux ? sdp->sd_aux->sa_overndx : 0, 0, NULL,
473de777a60Sab196087 	    conv_def_tag(sdp->sd_ref, &inv_buf));
4745aefb655Srie }
4755aefb655Srie 
4765aefb655Srie void
Dbg_syms_copy_reloc(Ofl_desc * ofl,Sym_desc * sdp,Word align)47702938ba2SRod Evans Dbg_syms_copy_reloc(Ofl_desc *ofl, Sym_desc *sdp, Word align)
4785aefb655Srie {
4795aefb655Srie 	static Boolean	symbol_title = TRUE;
480de777a60Sab196087 	Conv_inv_buf_t	inv_buf;
4815aefb655Srie 	Lm_list	*lml = ofl->ofl_lml;
4825aefb655Srie 
4835aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
4845aefb655Srie 		return;
4855aefb655Srie 
4865aefb655Srie 	if (symbol_title) {
4875aefb655Srie 		Dbg_util_nl(lml, DBG_NL_STD);
4885aefb655Srie 		dbg_print(lml, MSG_INTL(MSG_SYM_BSS));
4895aefb655Srie 
4905aefb655Srie 		symbol_title = FALSE;
4915aefb655Srie 	}
49202938ba2SRod Evans 
49302938ba2SRod Evans 	/*
49402938ba2SRod Evans 	 * Copy relocation symbols come in pairs, the original reference
49502938ba2SRod Evans 	 * (within a dependency), and the new destination (within the .bss of
49602938ba2SRod Evans 	 * the executable).  The latter is accompanied with a computed
49702938ba2SRod Evans 	 * alignment.
49802938ba2SRod Evans 	 */
49902938ba2SRod Evans 	if (align) {
50002938ba2SRod Evans 		dbg_print(lml, MSG_INTL(MSG_SYM_COPY_DST),
50102938ba2SRod Evans 		    Dbg_demangle_name(sdp->sd_name), EC_WORD(align));
50202938ba2SRod Evans 	} else {
50302938ba2SRod Evans 		dbg_print(lml, MSG_INTL(MSG_SYM_COPY_REF),
5045aefb655Srie 		    Dbg_demangle_name(sdp->sd_name));
50502938ba2SRod Evans 	}
5065aefb655Srie 
5075aefb655Srie 	if (DBG_NOTDETAIL())
5085aefb655Srie 		return;
5095aefb655Srie 
5105aefb655Srie 	Elf_syms_table_entry(lml, ELF_DBG_LD, MSG_ORIG(MSG_SYM_COPY),
5114f680cc6SAli Bahrami 	    ofl->ofl_dehdr->e_ident[EI_OSABI], ofl->ofl_dehdr->e_machine,
5124f680cc6SAli Bahrami 	    sdp->sd_sym, sdp->sd_aux ? sdp->sd_aux->sa_overndx : 0, 0, NULL,
513de777a60Sab196087 	    conv_def_tag(sdp->sd_ref, &inv_buf));
5145aefb655Srie }
5155aefb655Srie 
5165aefb655Srie void
Dbg_syms_reduce(Ofl_desc * ofl,int which,Sym_desc * sdp,int idx,const char * sname)5175aefb655Srie Dbg_syms_reduce(Ofl_desc *ofl, int which, Sym_desc *sdp, int idx,
5185aefb655Srie     const char *sname)
5197c478bd9Sstevel@tonic-gate {
5207c478bd9Sstevel@tonic-gate 	static Boolean	sym_reduce_title = TRUE;
5217c478bd9Sstevel@tonic-gate 	static Boolean	sym_retain_title = TRUE;
5227c478bd9Sstevel@tonic-gate 	Boolean		isfromglobal = (which == DBG_SYM_REDUCE_GLOBAL);
5237c478bd9Sstevel@tonic-gate 	Boolean		isfromretain = (which == DBG_SYM_REDUCE_RETAIN);
5245aefb655Srie 	Lm_list		*lml = ofl->ofl_lml;
5257c478bd9Sstevel@tonic-gate 
5265aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS | DBG_C_VERSIONS))
5277c478bd9Sstevel@tonic-gate 		return;
5287c478bd9Sstevel@tonic-gate 
5297c478bd9Sstevel@tonic-gate 	if (sym_reduce_title && isfromglobal) {
5307c478bd9Sstevel@tonic-gate 		sym_reduce_title = FALSE;
5315aefb655Srie 		Dbg_util_nl(lml, DBG_NL_STD);
5325aefb655Srie 		dbg_print(lml, MSG_INTL(MSG_SYM_REDUCED));
5337c478bd9Sstevel@tonic-gate 	} else if (sym_retain_title && isfromretain) {
5347c478bd9Sstevel@tonic-gate 		sym_retain_title = FALSE;
5355aefb655Srie 		Dbg_util_nl(lml, DBG_NL_STD);
5365aefb655Srie 		dbg_print(lml, MSG_INTL(MSG_SYM_RETAINING));
5377c478bd9Sstevel@tonic-gate 	}
5387c478bd9Sstevel@tonic-gate 
539635216b6SRod Evans 	if ((sdp->sd_flags & FLG_SY_ELIM) && isfromglobal)
5405aefb655Srie 		dbg_print(lml, MSG_INTL(MSG_SYM_ELIMINATING),
5415aefb655Srie 		    Dbg_demangle_name(sdp->sd_name));
5427c478bd9Sstevel@tonic-gate 	else if (isfromglobal)
5435aefb655Srie 		dbg_print(lml, MSG_INTL(MSG_SYM_REDUCING),
5445aefb655Srie 		    Dbg_demangle_name(sdp->sd_name));
5457c478bd9Sstevel@tonic-gate 	else
5465aefb655Srie 		dbg_print(lml, MSG_INTL(MSG_SYM_NOTELIMINATE),
5475aefb655Srie 		    Dbg_demangle_name(sdp->sd_name), sname, idx);
5487c478bd9Sstevel@tonic-gate 
5497c478bd9Sstevel@tonic-gate 	if (DBG_NOTDETAIL())
5507c478bd9Sstevel@tonic-gate 		return;
5517c478bd9Sstevel@tonic-gate 
5525aefb655Srie 	Elf_syms_table_entry(ofl->ofl_lml, ELF_DBG_LD, MSG_ORIG(MSG_SYM_LOCAL),
5534f680cc6SAli Bahrami 	    ofl->ofl_dehdr->e_ident[EI_OSABI], ofl->ofl_dehdr->e_machine,
5544f680cc6SAli Bahrami 	    sdp->sd_sym, sdp->sd_aux ? sdp->sd_aux->sa_overndx : 0, 0, NULL,
5557c478bd9Sstevel@tonic-gate 	    sdp->sd_file->ifl_name);
5567c478bd9Sstevel@tonic-gate }
5577c478bd9Sstevel@tonic-gate 
5587c478bd9Sstevel@tonic-gate void
Dbg_syms_dup_sort_addr(Lm_list * lml,const char * secname,const char * symname1,const char * symname2,Addr addr)559d579eb63Sab196087 Dbg_syms_dup_sort_addr(Lm_list *lml, const char *secname, const char *symname1,
560d579eb63Sab196087     const char *symname2, Addr addr)
561d579eb63Sab196087 {
562d579eb63Sab196087 	if (DBG_NOTCLASS(DBG_C_SYMBOLS) || DBG_NOTDETAIL())
563d579eb63Sab196087 		return;
564d579eb63Sab196087 
565d579eb63Sab196087 	dbg_print(lml, MSG_INTL(MSG_SYM_DUPSORTADDR), secname,
566d579eb63Sab196087 	    symname1, symname2, EC_ADDR(addr));
567d579eb63Sab196087 }
568d579eb63Sab196087 
569d579eb63Sab196087 void
Dbg_syminfo_title(Lm_list * lml)5705aefb655Srie Dbg_syminfo_title(Lm_list *lml)
5717c478bd9Sstevel@tonic-gate {
5725aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
5737c478bd9Sstevel@tonic-gate 		return;
5747c478bd9Sstevel@tonic-gate 	if (DBG_NOTDETAIL())
5757c478bd9Sstevel@tonic-gate 		return;
5767c478bd9Sstevel@tonic-gate 
5775aefb655Srie 	Dbg_util_nl(lml, DBG_NL_STD);
5785aefb655Srie 	dbg_print(lml, MSG_INTL(MSG_SYMINFO_INFO));
5795aefb655Srie 	Elf_syminfo_title(lml);
5807c478bd9Sstevel@tonic-gate }
5817c478bd9Sstevel@tonic-gate 
5827c478bd9Sstevel@tonic-gate void
Dbg_syminfo_entry(Lm_list * lml,Word ndx,Syminfo * sip,Sym * sym,const char * strtab,Dyn * dyn)5835aefb655Srie Dbg_syminfo_entry(Lm_list *lml, Word ndx, Syminfo *sip, Sym *sym,
5845aefb655Srie     const char *strtab, Dyn *dyn)
5857c478bd9Sstevel@tonic-gate {
5867c478bd9Sstevel@tonic-gate 	const char	*needed;
5877c478bd9Sstevel@tonic-gate 
5885aefb655Srie 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
5897c478bd9Sstevel@tonic-gate 		return;
5907c478bd9Sstevel@tonic-gate 	if (DBG_NOTDETAIL())
5917c478bd9Sstevel@tonic-gate 		return;
5927c478bd9Sstevel@tonic-gate 
5937c478bd9Sstevel@tonic-gate 	if (sip->si_boundto < SYMINFO_BT_LOWRESERVE)
5947c478bd9Sstevel@tonic-gate 		needed = strtab + dyn[sip->si_boundto].d_un.d_val;
5957c478bd9Sstevel@tonic-gate 	else
5967c478bd9Sstevel@tonic-gate 		needed = 0;
5977c478bd9Sstevel@tonic-gate 
5985aefb655Srie 	Elf_syminfo_entry(lml, ndx, sip,
5995aefb655Srie 	    Dbg_demangle_name(strtab + sym->st_name), needed);
6005aefb655Srie }
6015aefb655Srie 
6025aefb655Srie /*
6035aefb655Srie  * Symbol table output can differ slightly depending on the caller.  However,
6045aefb655Srie  * the final diagnostic is maintained here so hat the various message strings
6055aefb655Srie  * remain consistent
6065aefb655Srie  *
6075aefb655Srie  * elfdump:   index    value       size     type bind oth ver shndx       name
6085aefb655Srie  * ld:                 value       size     type bind oth ver shndx
6095aefb655Srie  */
6105aefb655Srie void
Elf_syms_table_title(Lm_list * lml,int caller)6115aefb655Srie Elf_syms_table_title(Lm_list *lml, int caller)
6125aefb655Srie {
6135aefb655Srie 	if (caller == ELF_DBG_ELFDUMP) {
6145aefb655Srie 		if (DBG_NOTLONG())
6155aefb655Srie 			dbg_print(lml, MSG_INTL(MSG_SYM_EFS_TITLE));
6165aefb655Srie 		else
6175aefb655Srie 			dbg_print(lml, MSG_INTL(MSG_SYM_EFL_TITLE));
6185aefb655Srie 		return;
6195aefb655Srie 	}
6205aefb655Srie 
6215aefb655Srie 	if (caller == ELF_DBG_LD) {
6225aefb655Srie 		if (DBG_NOTLONG())
6235aefb655Srie 			dbg_print(lml, MSG_INTL(MSG_SYM_LDS_TITLE));
6245aefb655Srie 		else
6255aefb655Srie 			dbg_print(lml, MSG_INTL(MSG_SYM_LDL_TITLE));
6265aefb655Srie 		return;
6275aefb655Srie 	}
6285aefb655Srie }
6295aefb655Srie 
6305aefb655Srie void
Elf_syms_table_entry(Lm_list * lml,int caller,const char * prestr,uchar_t osabi,Half mach,Sym * sym,Versym verndx,int gnuver,const char * sec,const char * poststr)6314f680cc6SAli Bahrami Elf_syms_table_entry(Lm_list *lml, int caller, const char *prestr,
6324f680cc6SAli Bahrami     uchar_t osabi, Half mach, Sym *sym, Versym verndx, int gnuver,
6334f680cc6SAli Bahrami     const char *sec, const char *poststr)
6345aefb655Srie {
635de777a60Sab196087 	Conv_inv_buf_t	inv_buf1, inv_buf2, inv_buf3;
636de777a60Sab196087 	Conv_inv_buf_t	inv_buf4, inv_buf5, inv_buf6;
6375aefb655Srie 	uchar_t		type = ELF_ST_TYPE(sym->st_info);
6385aefb655Srie 	uchar_t		bind = ELF_ST_BIND(sym->st_info);
6395aefb655Srie 	const char	*msg;
6405aefb655Srie 
6415aefb655Srie 	if ((caller == ELF_DBG_ELFDUMP) ||
6425aefb655Srie 	    (caller == ELF_DBG_LD)) {
6435aefb655Srie 		if (DBG_NOTLONG())
6445aefb655Srie 			msg = MSG_INTL(MSG_SYM_EFS_ENTRY);
6455aefb655Srie 		else
6465aefb655Srie 			msg = MSG_INTL(MSG_SYM_EFL_ENTRY);
6475aefb655Srie 
6484f680cc6SAli Bahrami 		if (sec == NULL)
6494f680cc6SAli Bahrami 			sec = conv_sym_shndx(osabi, mach, sym->st_shndx,
6504f680cc6SAli Bahrami 			    CONV_FMT_DECIMAL, &inv_buf6);
6514f680cc6SAli Bahrami 
6525aefb655Srie 		dbg_print(lml, msg, prestr,
653de777a60Sab196087 		    conv_sym_value(mach, type, sym->st_value, &inv_buf1),
654de777a60Sab196087 		    sym->st_size, conv_sym_info_type(mach, type, 0, &inv_buf2),
655de777a60Sab196087 		    conv_sym_info_bind(bind, 0, &inv_buf3),
656de777a60Sab196087 		    conv_sym_other(sym->st_other, &inv_buf4),
657de777a60Sab196087 		    conv_ver_index(verndx, gnuver, &inv_buf5),
6584f680cc6SAli Bahrami 		    sec, Elf_demangle_name(poststr));
6595aefb655Srie 	}
6607c478bd9Sstevel@tonic-gate }
66108278a5eSRod Evans 
66208278a5eSRod Evans void
Dbg_syms_cap_title(Ofl_desc * ofl)66308278a5eSRod Evans Dbg_syms_cap_title(Ofl_desc *ofl)
66408278a5eSRod Evans {
66508278a5eSRod Evans 	Lm_list	*lml = ofl->ofl_lml;
66608278a5eSRod Evans 
66708278a5eSRod Evans 	if (DBG_NOTCLASS(DBG_C_SYMBOLS))
66808278a5eSRod Evans 		return;
66908278a5eSRod Evans 	if (DBG_NOTDETAIL())
67008278a5eSRod Evans 		return;
67108278a5eSRod Evans 
67208278a5eSRod Evans 	Dbg_util_nl(lml, DBG_NL_STD);
67308278a5eSRod Evans 	dbg_print(lml, MSG_INTL(MSG_SYM_CAPABILITIES));
67408278a5eSRod Evans 	Elf_syms_table_title(lml, ELF_DBG_LD);
67508278a5eSRod Evans }
676