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.
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.
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]
23 * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
33 Elf_shdr(Lm_list
*lml
, uchar_t osabi
, Half mach
, Shdr
*shdr
)
35 Conv_inv_buf_t inv_buf1
, inv_buf2
;
36 Conv_sec_flags_buf_t sec_flags_buf
;
38 dbg_print(lml
, MSG_ORIG(MSG_SHD_ADDR
), EC_ADDR(shdr
->sh_addr
),
39 conv_sec_flags(osabi
, mach
, shdr
->sh_flags
, 0, &sec_flags_buf
));
40 dbg_print(lml
, MSG_ORIG(MSG_SHD_SIZE
), EC_XWORD(shdr
->sh_size
),
41 conv_sec_type(osabi
, mach
, shdr
->sh_type
, 0, &inv_buf1
));
42 if (shdr
->sh_entsize
== 0) {
43 dbg_print(lml
, MSG_ORIG(MSG_SHD_OFFSET
),
44 EC_OFF(shdr
->sh_offset
), EC_XWORD(shdr
->sh_entsize
));
45 } else { /* Provide an entry count */
46 Xword nelts
= shdr
->sh_size
/ shdr
->sh_entsize
;
47 const char *entstr
= (nelts
== 1) ? MSG_INTL(MSG_SHD_ENTRY_1
) :
48 MSG_INTL(MSG_SHD_ENTRY_N
);
50 dbg_print(lml
, MSG_ORIG(MSG_SHD_OFFSET_ENT
),
51 EC_OFF(shdr
->sh_offset
), EC_XWORD(shdr
->sh_entsize
),
52 EC_XWORD(nelts
), entstr
);
54 dbg_print(lml
, MSG_ORIG(MSG_SHD_LINK
),
55 conv_sec_linkinfo(shdr
->sh_link
, shdr
->sh_flags
, &inv_buf1
),
56 conv_sec_linkinfo(shdr
->sh_info
, shdr
->sh_flags
, &inv_buf2
));
57 dbg_print(lml
, MSG_ORIG(MSG_SHD_ALIGN
), EC_XWORD(shdr
->sh_addralign
));
61 Dbg_shdr_modified(Lm_list
*lml
, const char *obj
, uchar_t osabi
, Half mach
,
62 Word ndx
, Shdr
*oshdr
, Shdr
*nshdr
, const char *name
)
64 dbg_isec_name_buf_t buf
;
67 if (DBG_NOTCLASS(DBG_C_SECTIONS
| DBG_C_SUPPORT
))
72 Dbg_util_nl(lml
, DBG_NL_STD
);
73 dbg_print(lml
, MSG_INTL(MSG_SHD_MODIFIED
),
74 dbg_fmt_isec_name2(name
, ndx
, buf
, &alloc_mem
), obj
);
77 dbg_print(lml
, MSG_INTL(MSG_SHD_ORIG
));
78 Elf_shdr(lml
, osabi
, mach
, oshdr
);
80 dbg_print(lml
, MSG_INTL(MSG_SHD_NEW
));
81 Elf_shdr(lml
, osabi
, mach
, nshdr
);
83 Dbg_util_nl(lml
, DBG_NL_STD
);