xref: /titanic_52/usr/src/cmd/sgs/liblddbg/common/entry.c (revision 7aec1d6e253b21f9e9b7ef68b4d81ab9859b51fe)
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, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  *	Copyright (c) 1998-1999 by Sun Microsystems, Inc.
24  *	All rights reserved.
25  */
26 #pragma ident	"%Z%%M%	%I%	%E% SMI"
27 
28 #include	"msg.h"
29 #include	"_debug.h"
30 #include	"libld.h"
31 
32 /*
33  * Print out a single `entry descriptor' entry.
34  */
35 void
36 _Dbg_ent_entry(Half mach, Ent_desc *enp)
37 {
38 	Listnode	*lnp;
39 	char		*cp;
40 
41 	dbg_print(MSG_ORIG(MSG_ECR_NAME),
42 	    (enp->ec_name ? enp->ec_name : MSG_INTL(MSG_STR_NULL)),
43 	    conv_secflg_str(mach, enp->ec_attrmask));
44 
45 	dbg_print(MSG_ORIG(MSG_ECR_SEGMENT),
46 	    (enp->ec_segment->sg_name ? enp->ec_segment->sg_name :
47 	    MSG_INTL(MSG_STR_NULL)), conv_secflg_str(mach, enp->ec_attrbits));
48 
49 	dbg_print(MSG_ORIG(MSG_ECR_NDX),
50 	    EC_WORD(enp->ec_ndx), conv_sectyp_str(mach, enp->ec_type));
51 
52 	if (enp->ec_files.head) {
53 		dbg_print(MSG_ORIG(MSG_ECR_FILES));
54 		for (LIST_TRAVERSE(&(enp->ec_files), lnp, cp))
55 			dbg_print(MSG_ORIG(MSG_ECR_FILE), cp);
56 	}
57 }
58 
59 
60 /*
61  * Print out all `entrance descriptor' entries.
62  */
63 void
64 Dbg_ent_print(Half mach, List *len, Boolean dmode)
65 {
66 	Listnode	*lnp;
67 	Ent_desc	*enp;
68 	int		ndx = 1;
69 
70 	if (DBG_NOTCLASS(DBG_ENTRY))
71 		return;
72 
73 	dbg_print(MSG_ORIG(MSG_STR_EMPTY));
74 	dbg_print(MSG_INTL(MSG_ECR_TITLE),
75 		(dmode ? MSG_INTL(MSG_ECR_DYNAMIC) : MSG_INTL(MSG_ECR_STATIC)));
76 
77 	for (LIST_TRAVERSE(len, lnp, enp)) {
78 		dbg_print(MSG_INTL(MSG_ECR_DESC), ndx);
79 		_Dbg_ent_entry(mach, enp);
80 		ndx++;
81 	}
82 }
83