xref: /titanic_52/usr/src/cmd/sgs/libconv/common/sections.c (revision 08278a5e91755ccdb5850c19d21d42fb2e16b50e)
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  */
2111a2bb38Srie 
227c478bd9Sstevel@tonic-gate /*
23*08278a5eSRod Evans  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
247c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
257c478bd9Sstevel@tonic-gate  */
267c478bd9Sstevel@tonic-gate 
277c478bd9Sstevel@tonic-gate /*
287c478bd9Sstevel@tonic-gate  * String conversion routines for section attributes.
297c478bd9Sstevel@tonic-gate  */
307c478bd9Sstevel@tonic-gate #include	<string.h>
317c478bd9Sstevel@tonic-gate #include	<sys/param.h>
327c478bd9Sstevel@tonic-gate #include	<sys/elf_SPARC.h>
337c478bd9Sstevel@tonic-gate #include	<sys/elf_amd64.h>
347c478bd9Sstevel@tonic-gate #include	<_conv.h>
357c478bd9Sstevel@tonic-gate #include	<sections_msg.h>
367c478bd9Sstevel@tonic-gate 
37c13de8f6Sab196087 
384f680cc6SAli Bahrami static const conv_ds_t **
394f680cc6SAli Bahrami sec_type_strings(conv_iter_osabi_t osabi, Half mach, Conv_fmt_flags_t fmt_flags)
404f680cc6SAli Bahrami {
414f680cc6SAli Bahrami 	/*
424f680cc6SAli Bahrami 	 * This routine can return an array with 1 generic array, up to
434f680cc6SAli Bahrami 	 * three osabi arrays, two machine arrays, plus the NULL termination.
444f680cc6SAli Bahrami 	 */
454f680cc6SAli Bahrami #define	MAX_RET	7
46c13de8f6Sab196087 
474f680cc6SAli Bahrami 	static const Msg secs_def[SHT_NUM] = {
484f680cc6SAli Bahrami 		MSG_SHT_NULL,			MSG_SHT_PROGBITS,
494f680cc6SAli Bahrami 		MSG_SHT_SYMTAB,			MSG_SHT_STRTAB,
504f680cc6SAli Bahrami 		MSG_SHT_RELA,			MSG_SHT_HASH,
514f680cc6SAli Bahrami 		MSG_SHT_DYNAMIC,		MSG_SHT_NOTE,
524f680cc6SAli Bahrami 		MSG_SHT_NOBITS,			MSG_SHT_REL,
534f680cc6SAli Bahrami 		MSG_SHT_SHLIB,			MSG_SHT_DYNSYM,
544f680cc6SAli Bahrami 		MSG_SHT_UNKNOWN12,		MSG_SHT_UNKNOWN13,
554f680cc6SAli Bahrami 		MSG_SHT_INIT_ARRAY,		MSG_SHT_FINI_ARRAY,
564f680cc6SAli Bahrami 		MSG_SHT_PREINIT_ARRAY,		MSG_SHT_GROUP,
577c478bd9Sstevel@tonic-gate 		MSG_SHT_SYMTAB_SHNDX
587c478bd9Sstevel@tonic-gate 	};
594f680cc6SAli Bahrami 	static const Msg secs_dmp[SHT_NUM] = {
604f680cc6SAli Bahrami 		MSG_SHT_NULL_DMP,		MSG_SHT_PROGBITS_DMP,
614f680cc6SAli Bahrami 		MSG_SHT_SYMTAB_DMP,		MSG_SHT_STRTAB_DMP,
624f680cc6SAli Bahrami 		MSG_SHT_RELA_DMP,		MSG_SHT_HASH_DMP,
634f680cc6SAli Bahrami 		MSG_SHT_DYNAMIC_DMP,		MSG_SHT_NOTE_DMP,
644f680cc6SAli Bahrami 		MSG_SHT_NOBITS_DMP,		MSG_SHT_REL_DMP,
654f680cc6SAli Bahrami 		MSG_SHT_SHLIB_DMP,		MSG_SHT_DYNSYM_DMP,
664f680cc6SAli Bahrami 		MSG_SHT_UNKNOWN12_DMP,		MSG_SHT_UNKNOWN13_DMP,
674f680cc6SAli Bahrami 		MSG_SHT_INIT_ARRAY_DMP,		MSG_SHT_FINI_ARRAY_DMP,
684f680cc6SAli Bahrami 		MSG_SHT_PREINIT_ARRAY_DMP,	MSG_SHT_GROUP_DMP,
694f680cc6SAli Bahrami 		MSG_SHT_SYMTAB_SHNDX_DMP
704f680cc6SAli Bahrami 	};
714f680cc6SAli Bahrami 	static const Msg secs_cf[SHT_NUM] = {
724f680cc6SAli Bahrami 		MSG_SHT_NULL_CF,		MSG_SHT_PROGBITS_CF,
734f680cc6SAli Bahrami 		MSG_SHT_SYMTAB_CF,		MSG_SHT_STRTAB_CF,
744f680cc6SAli Bahrami 		MSG_SHT_RELA_CF,		MSG_SHT_HASH_CF,
754f680cc6SAli Bahrami 		MSG_SHT_DYNAMIC_CF,		MSG_SHT_NOTE_CF,
764f680cc6SAli Bahrami 		MSG_SHT_NOBITS_CF,		MSG_SHT_REL_CF,
774f680cc6SAli Bahrami 		MSG_SHT_SHLIB_CF,		MSG_SHT_DYNSYM_CF,
784f680cc6SAli Bahrami 		MSG_SHT_UNKNOWN12_CF,		MSG_SHT_UNKNOWN13_CF,
794f680cc6SAli Bahrami 		MSG_SHT_INIT_ARRAY_CF,		MSG_SHT_FINI_ARRAY_CF,
804f680cc6SAli Bahrami 		MSG_SHT_PREINIT_ARRAY_CF,	MSG_SHT_GROUP_CF,
814f680cc6SAli Bahrami 		MSG_SHT_SYMTAB_SHNDX_CF
824f680cc6SAli Bahrami 	};
834f680cc6SAli Bahrami 	static const Msg secs_nf[SHT_NUM] = {
844f680cc6SAli Bahrami 		MSG_SHT_NULL_NF,		MSG_SHT_PROGBITS_NF,
854f680cc6SAli Bahrami 		MSG_SHT_SYMTAB_NF,		MSG_SHT_STRTAB_NF,
864f680cc6SAli Bahrami 		MSG_SHT_RELA_NF,		MSG_SHT_HASH_NF,
874f680cc6SAli Bahrami 		MSG_SHT_DYNAMIC_NF,		MSG_SHT_NOTE_NF,
884f680cc6SAli Bahrami 		MSG_SHT_NOBITS_NF,		MSG_SHT_REL_NF,
894f680cc6SAli Bahrami 		MSG_SHT_SHLIB_NF,		MSG_SHT_DYNSYM_NF,
904f680cc6SAli Bahrami 		MSG_SHT_UNKNOWN12_NF,		MSG_SHT_UNKNOWN13_NF,
914f680cc6SAli Bahrami 		MSG_SHT_INIT_ARRAY_NF,		MSG_SHT_FINI_ARRAY_NF,
924f680cc6SAli Bahrami 		MSG_SHT_PREINIT_ARRAY_NF,	MSG_SHT_GROUP_NF,
934f680cc6SAli Bahrami 		MSG_SHT_SYMTAB_SHNDX_NF
94c13de8f6Sab196087 	};
957c478bd9Sstevel@tonic-gate #if	(SHT_NUM != (SHT_SYMTAB_SHNDX + 1))
967c478bd9Sstevel@tonic-gate #error	"SHT_NUM has grown"
977c478bd9Sstevel@tonic-gate #endif
984f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_secs_def = {
994f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_NULL, secs_def) };
1004f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_secs_dmp = {
1014f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_NULL, secs_dmp) };
1024f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_secs_cf = {
1034f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_NULL, secs_cf) };
1044f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_secs_nf = {
1054f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_NULL, secs_nf) };
1067c478bd9Sstevel@tonic-gate 
1074f680cc6SAli Bahrami 
1084f680cc6SAli Bahrami 	static const Msg usecs_def[SHT_HISUNW - SHT_LOSUNW + 1] = {
109*08278a5eSRod Evans 		MSG_SHT_SUNW_CAPCHAIN,		MSG_SHT_SUNW_CAPINFO,
1104f680cc6SAli Bahrami 		MSG_SHT_SUNW_SYMSORT,		MSG_SHT_SUNW_TLSSORT,
1114f680cc6SAli Bahrami 		MSG_SHT_SUNW_LDYNSYM,		MSG_SHT_SUNW_DOF,
1124f680cc6SAli Bahrami 		MSG_SHT_SUNW_CAP,		MSG_SHT_SUNW_SIGNATURE,
1139039eeafSab196087 		MSG_SHT_SUNW_ANNOTATE,		MSG_SHT_SUNW_DEBUGSTR,
1144f680cc6SAli Bahrami 		MSG_SHT_SUNW_DEBUG,		MSG_SHT_SUNW_MOVE,
1154f680cc6SAli Bahrami 		MSG_SHT_SUNW_COMDAT,		MSG_SHT_SUNW_SYMINFO,
1164f680cc6SAli Bahrami 		MSG_SHT_SUNW_VERDEF,		MSG_SHT_SUNW_VERNEED,
1174f680cc6SAli Bahrami 		MSG_SHT_SUNW_VERSYM
118c13de8f6Sab196087 	};
1194f680cc6SAli Bahrami 	static const Msg usecs_dmp[SHT_HISUNW - SHT_LOSUNW + 1] = {
120*08278a5eSRod Evans 		MSG_SHT_SUNW_CAPCHAIN_DMP,	MSG_SHT_SUNW_CAPINFO_DMP,
1214f680cc6SAli Bahrami 		MSG_SHT_SUNW_SYMSORT_DMP,	MSG_SHT_SUNW_TLSSORT_DMP,
1224f680cc6SAli Bahrami 		MSG_SHT_SUNW_LDYNSYM_DMP,	MSG_SHT_SUNW_DOF_DMP,
1234f680cc6SAli Bahrami 		MSG_SHT_SUNW_CAP_DMP,		MSG_SHT_SUNW_SIGNATURE_DMP,
1244f680cc6SAli Bahrami 		MSG_SHT_SUNW_ANNOTATE_DMP,	MSG_SHT_SUNW_DEBUGSTR_DMP,
1254f680cc6SAli Bahrami 		MSG_SHT_SUNW_DEBUG_DMP,		MSG_SHT_SUNW_MOVE_DMP,
1264f680cc6SAli Bahrami 		MSG_SHT_SUNW_COMDAT_DMP,	MSG_SHT_SUNW_SYMINFO_DMP,
1274f680cc6SAli Bahrami 		MSG_SHT_SUNW_VERDEF_DMP,	MSG_SHT_SUNW_VERNEED_DMP,
1284f680cc6SAli Bahrami 		MSG_SHT_SUNW_VERSYM_DMP
1294f680cc6SAli Bahrami 	};
1304f680cc6SAli Bahrami 	static const Msg usecs_cf[SHT_HISUNW - SHT_LOSUNW + 1] = {
131*08278a5eSRod Evans 		MSG_SHT_SUNW_CAPCHAIN_CF,	MSG_SHT_SUNW_CAPINFO_CF,
1324f680cc6SAli Bahrami 		MSG_SHT_SUNW_SYMSORT_CF,	MSG_SHT_SUNW_TLSSORT_CF,
1334f680cc6SAli Bahrami 		MSG_SHT_SUNW_LDYNSYM_CF,	MSG_SHT_SUNW_DOF_CF,
1344f680cc6SAli Bahrami 		MSG_SHT_SUNW_CAP_CF,		MSG_SHT_SUNW_SIGNATURE_CF,
1354f680cc6SAli Bahrami 		MSG_SHT_SUNW_ANNOTATE_CF,	MSG_SHT_SUNW_DEBUGSTR_CF,
1364f680cc6SAli Bahrami 		MSG_SHT_SUNW_DEBUG_CF,		MSG_SHT_SUNW_MOVE_CF,
1374f680cc6SAli Bahrami 		MSG_SHT_SUNW_COMDAT_CF,		MSG_SHT_SUNW_SYMINFO_CF,
1384f680cc6SAli Bahrami 		MSG_SHT_SUNW_VERDEF_CF,		MSG_SHT_SUNW_VERNEED_CF,
1394f680cc6SAli Bahrami 		MSG_SHT_SUNW_VERSYM_CF
1404f680cc6SAli Bahrami 	};
1414f680cc6SAli Bahrami 	static const Msg usecs_nf[SHT_HISUNW - SHT_LOSUNW + 1] = {
142*08278a5eSRod Evans 		MSG_SHT_SUNW_CAPCHAIN_NF,	MSG_SHT_SUNW_CAPINFO_NF,
1434f680cc6SAli Bahrami 		MSG_SHT_SUNW_SYMSORT_NF,	MSG_SHT_SUNW_TLSSORT_NF,
1444f680cc6SAli Bahrami 		MSG_SHT_SUNW_LDYNSYM_NF,	MSG_SHT_SUNW_DOF_NF,
1454f680cc6SAli Bahrami 		MSG_SHT_SUNW_CAP_NF,		MSG_SHT_SUNW_SIGNATURE_NF,
1464f680cc6SAli Bahrami 		MSG_SHT_SUNW_ANNOTATE_NF,	MSG_SHT_SUNW_DEBUGSTR_NF,
1474f680cc6SAli Bahrami 		MSG_SHT_SUNW_DEBUG_NF,		MSG_SHT_SUNW_MOVE_NF,
1484f680cc6SAli Bahrami 		MSG_SHT_SUNW_COMDAT_NF,		MSG_SHT_SUNW_SYMINFO_NF,
1494f680cc6SAli Bahrami 		MSG_SHT_SUNW_VERDEF_NF,		MSG_SHT_SUNW_VERNEED_NF,
1504f680cc6SAli Bahrami 		MSG_SHT_SUNW_VERSYM_NF
1517c478bd9Sstevel@tonic-gate 	};
152*08278a5eSRod Evans #if	(SHT_LOSUNW != SHT_SUNW_capchain)
1537c478bd9Sstevel@tonic-gate #error	"SHT_LOSUNW has moved"
1547c478bd9Sstevel@tonic-gate #endif
1554f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_usecs_def = {
156*08278a5eSRod Evans 	    CONV_DS_MSG_INIT(SHT_SUNW_capchain, usecs_def) };
1574f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_usecs_dmp = {
158*08278a5eSRod Evans 	    CONV_DS_MSG_INIT(SHT_SUNW_capchain, usecs_dmp) };
1594f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_usecs_cf = {
160*08278a5eSRod Evans 	    CONV_DS_MSG_INIT(SHT_SUNW_capchain, usecs_cf) };
1614f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_usecs_nf = {
162*08278a5eSRod Evans 	    CONV_DS_MSG_INIT(SHT_SUNW_capchain, usecs_nf) };
1637c478bd9Sstevel@tonic-gate 
164c13de8f6Sab196087 
1654f680cc6SAli Bahrami 	/* The Linux osabi range has two separate sequences */
1664f680cc6SAli Bahrami 	static const Msg usecs_gnu1_def[] = {
1674f680cc6SAli Bahrami 		MSG_SHT_GNU_ATTRIBUTES,		MSG_SHT_GNU_HASH,
1684f680cc6SAli Bahrami 		MSG_SHT_GNU_LIBLIST,		MSG_SHT_CHECKSUM,
1694f680cc6SAli Bahrami 	};
1704f680cc6SAli Bahrami 	static const Msg usecs_gnu1_dmp[] = {
1714f680cc6SAli Bahrami 		MSG_SHT_GNU_ATTRIBUTES_DMP,	MSG_SHT_GNU_HASH_DMP,
1724f680cc6SAli Bahrami 		MSG_SHT_GNU_LIBLIST_DMP,	MSG_SHT_CHECKSUM_DMP,
1734f680cc6SAli Bahrami 	};
1744f680cc6SAli Bahrami 	static const Msg usecs_gnu1_cf[] = {
1754f680cc6SAli Bahrami 		MSG_SHT_GNU_ATTRIBUTES_CF,	MSG_SHT_GNU_HASH_CF,
1764f680cc6SAli Bahrami 		MSG_SHT_GNU_LIBLIST_CF,	MSG_SHT_CHECKSUM_CF,
1774f680cc6SAli Bahrami 	};
1784f680cc6SAli Bahrami 	static const Msg usecs_gnu1_nf[] = {
1794f680cc6SAli Bahrami 		MSG_SHT_GNU_ATTRIBUTES_NF,	MSG_SHT_GNU_HASH_NF,
1804f680cc6SAli Bahrami 		MSG_SHT_GNU_LIBLIST_NF,	MSG_SHT_CHECKSUM_NF,
1814f680cc6SAli Bahrami 	};
1824f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_usecs_gnu1_def = {
1834f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_GNU_ATTRIBUTES, usecs_gnu1_def) };
1844f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_usecs_gnu1_dmp = {
1854f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_GNU_ATTRIBUTES, usecs_gnu1_dmp) };
1864f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_usecs_gnu1_cf = {
1874f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_GNU_ATTRIBUTES, usecs_gnu1_cf) };
1884f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_usecs_gnu1_nf = {
1894f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_GNU_ATTRIBUTES, usecs_gnu1_nf) };
1904f680cc6SAli Bahrami 
1914f680cc6SAli Bahrami 
1924f680cc6SAli Bahrami 	static const Msg usecs_gnu2_def[] = {
1934f680cc6SAli Bahrami 		MSG_SHT_GNU_VERDEF,		MSG_SHT_GNU_VERNEED,
1944f680cc6SAli Bahrami 		MSG_SHT_GNU_VERSYM
1954f680cc6SAli Bahrami 	};
1964f680cc6SAli Bahrami 	static const Msg usecs_gnu2_dmp[] = {
1974f680cc6SAli Bahrami 		MSG_SHT_GNU_VERDEF_DMP,		MSG_SHT_GNU_VERNEED_DMP,
1984f680cc6SAli Bahrami 		MSG_SHT_GNU_VERSYM_DMP
1994f680cc6SAli Bahrami 	};
2004f680cc6SAli Bahrami 	static const Msg usecs_gnu2_cf[] = {
2014f680cc6SAli Bahrami 		MSG_SHT_GNU_VERDEF_CF,		MSG_SHT_GNU_VERNEED_CF,
2024f680cc6SAli Bahrami 		MSG_SHT_GNU_VERSYM_CF
2034f680cc6SAli Bahrami 	};
2044f680cc6SAli Bahrami 	static const Msg usecs_gnu2_nf[] = {
2054f680cc6SAli Bahrami 		MSG_SHT_GNU_VERDEF_NF,		MSG_SHT_GNU_VERNEED_NF,
2064f680cc6SAli Bahrami 		MSG_SHT_GNU_VERSYM_NF
2074f680cc6SAli Bahrami 	};
2084f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_usecs_gnu2_def = {
2094f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_GNU_verdef, usecs_gnu2_def) };
2104f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_usecs_gnu2_dmp = {
2114f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_GNU_verdef, usecs_gnu2_dmp) };
2124f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_usecs_gnu2_cf = {
2134f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_GNU_verdef, usecs_gnu2_cf) };
2144f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_usecs_gnu2_nf = {
2154f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_GNU_verdef, usecs_gnu2_nf) };
2164f680cc6SAli Bahrami 
2174f680cc6SAli Bahrami 
2184f680cc6SAli Bahrami 	/* sparc processor range */
2194f680cc6SAli Bahrami 	static const Msg sparc_def[] = { MSG_SHT_SPARC_GOTDATA };
2204f680cc6SAli Bahrami 	static const Msg sparc_dmp[] = { MSG_SHT_SPARC_GOTDATA_DMP };
2214f680cc6SAli Bahrami 	static const Msg sparc_cf[] = { MSG_SHT_SPARC_GOTDATA_CF };
2224f680cc6SAli Bahrami 	static const Msg sparc_nf[] = { MSG_SHT_SPARC_GOTDATA_NF };
2234f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_sparc_def = {
2244f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_SPARC_GOTDATA, sparc_def) };
2254f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_sparc_dmp = {
2264f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_SPARC_GOTDATA, sparc_dmp) };
2274f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_sparc_cf = {
2284f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_SPARC_GOTDATA, sparc_cf) };
2294f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_sparc_nf = {
2304f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_SPARC_GOTDATA, sparc_nf) };
2314f680cc6SAli Bahrami 
2324f680cc6SAli Bahrami 	/* amd64 processor range */
2334f680cc6SAli Bahrami 	static const Msg amd64_def[] = { MSG_SHT_AMD64_UNWIND };
2344f680cc6SAli Bahrami 	static const Msg amd64_dmp[] = { MSG_SHT_AMD64_UNWIND_DMP };
2354f680cc6SAli Bahrami 	static const Msg amd64_cf[] = { MSG_SHT_AMD64_UNWIND_CF };
2364f680cc6SAli Bahrami 	static const Msg amd64_nf[] = { MSG_SHT_AMD64_UNWIND_NF };
2374f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_amd64_def = {
2384f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_AMD64_UNWIND, amd64_def) };
2394f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_amd64_dmp = {
2404f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_AMD64_UNWIND, amd64_dmp) };
2414f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_amd64_cf = {
2424f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_AMD64_UNWIND, amd64_cf) };
2434f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_amd64_nf = {
2444f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHT_AMD64_UNWIND, amd64_nf) };
2454f680cc6SAli Bahrami 
2464f680cc6SAli Bahrami 
2474f680cc6SAli Bahrami 	static const conv_ds_t	*retarr[MAX_RET];
2484f680cc6SAli Bahrami 	int			retndx = 0;
2494f680cc6SAli Bahrami 
2504f680cc6SAli Bahrami 	/* Select the strings to use, based on string style and OSABI */
2514f680cc6SAli Bahrami 	switch (CONV_TYPE_FMT_ALT(fmt_flags)) {
2524f680cc6SAli Bahrami 	case CONV_FMT_ALT_DUMP:
2534f680cc6SAli Bahrami 		retarr[retndx++] = CONV_DS_ADDR(ds_secs_dmp);
2544f680cc6SAli Bahrami 		break;
2554f680cc6SAli Bahrami 	case CONV_FMT_ALT_CF:
2564f680cc6SAli Bahrami 		retarr[retndx++] = CONV_DS_ADDR(ds_secs_cf);
2574f680cc6SAli Bahrami 		break;
2584f680cc6SAli Bahrami 	case CONV_FMT_ALT_NF:
2594f680cc6SAli Bahrami 		retarr[retndx++] = CONV_DS_ADDR(ds_secs_nf);
2604f680cc6SAli Bahrami 		break;
2614f680cc6SAli Bahrami 	default:
2624f680cc6SAli Bahrami 		retarr[retndx++] = CONV_DS_ADDR(ds_secs_def);
2634f680cc6SAli Bahrami 		break;
2644f680cc6SAli Bahrami 	}
2654f680cc6SAli Bahrami 
2664f680cc6SAli Bahrami 	if ((osabi == ELFOSABI_NONE) || (osabi == ELFOSABI_SOLARIS) ||
2674f680cc6SAli Bahrami 	    (osabi == CONV_OSABI_ALL)) {
2684f680cc6SAli Bahrami 		switch (CONV_TYPE_FMT_ALT(fmt_flags)) {
2694f680cc6SAli Bahrami 		case CONV_FMT_ALT_DUMP:
2704f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_usecs_dmp);
2714f680cc6SAli Bahrami 			break;
2724f680cc6SAli Bahrami 		case CONV_FMT_ALT_CF:
2734f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_usecs_cf);
2744f680cc6SAli Bahrami 			break;
2754f680cc6SAli Bahrami 		case CONV_FMT_ALT_NF:
2764f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_usecs_nf);
2774f680cc6SAli Bahrami 			break;
2784f680cc6SAli Bahrami 		default:
2794f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_usecs_def);
2804f680cc6SAli Bahrami 			break;
2814f680cc6SAli Bahrami 		}
2824f680cc6SAli Bahrami 	}
2834f680cc6SAli Bahrami 
2844f680cc6SAli Bahrami 	if ((osabi == ELFOSABI_LINUX) || (osabi == CONV_OSABI_ALL)) {
2854f680cc6SAli Bahrami 		switch (CONV_TYPE_FMT_ALT(fmt_flags)) {
2864f680cc6SAli Bahrami 		case CONV_FMT_ALT_DUMP:
2874f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_usecs_gnu1_dmp);
2884f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_usecs_gnu2_dmp);
2894f680cc6SAli Bahrami 			break;
2904f680cc6SAli Bahrami 		case CONV_FMT_ALT_CF:
2914f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_usecs_gnu1_cf);
2924f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_usecs_gnu2_cf);
2934f680cc6SAli Bahrami 			break;
2944f680cc6SAli Bahrami 		case CONV_FMT_ALT_NF:
2954f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_usecs_gnu1_nf);
2964f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_usecs_gnu2_nf);
2974f680cc6SAli Bahrami 			break;
2984f680cc6SAli Bahrami 		default:
2994f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_usecs_gnu1_def);
3004f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_usecs_gnu2_def);
3014f680cc6SAli Bahrami 			break;
3024f680cc6SAli Bahrami 		}
3034f680cc6SAli Bahrami 	}
3044f680cc6SAli Bahrami 
3054f680cc6SAli Bahrami 	if ((mach == EM_SPARC) || (mach == EM_SPARC32PLUS) ||
3064f680cc6SAli Bahrami 	    (mach == EM_SPARCV9) || (mach == CONV_MACH_ALL)) {
3074f680cc6SAli Bahrami 		switch (CONV_TYPE_FMT_ALT(fmt_flags)) {
3084f680cc6SAli Bahrami 		case CONV_FMT_ALT_DUMP:
3094f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_sparc_dmp);
3104f680cc6SAli Bahrami 			break;
3114f680cc6SAli Bahrami 		case CONV_FMT_ALT_CF:
3124f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_sparc_cf);
3134f680cc6SAli Bahrami 			break;
3144f680cc6SAli Bahrami 		case CONV_FMT_ALT_NF:
3154f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_sparc_nf);
3164f680cc6SAli Bahrami 			break;
3174f680cc6SAli Bahrami 		default:
3184f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_sparc_def);
3194f680cc6SAli Bahrami 			break;
3204f680cc6SAli Bahrami 		}
3214f680cc6SAli Bahrami 	}
3224f680cc6SAli Bahrami 
3234f680cc6SAli Bahrami 	if ((mach == EM_AMD64) || (mach == CONV_MACH_ALL)) {
3244f680cc6SAli Bahrami 		switch (CONV_TYPE_FMT_ALT(fmt_flags)) {
3254f680cc6SAli Bahrami 		case CONV_FMT_ALT_DUMP:
3264f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_amd64_dmp);
3274f680cc6SAli Bahrami 			break;
3284f680cc6SAli Bahrami 		case CONV_FMT_ALT_CF:
3294f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_amd64_cf);
3304f680cc6SAli Bahrami 			break;
3314f680cc6SAli Bahrami 		case CONV_FMT_ALT_NF:
3324f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_amd64_nf);
3334f680cc6SAli Bahrami 			break;
3344f680cc6SAli Bahrami 		default:
3354f680cc6SAli Bahrami 			retarr[retndx++] = CONV_DS_ADDR(ds_amd64_def);
3364f680cc6SAli Bahrami 			break;
3374f680cc6SAli Bahrami 		}
3384f680cc6SAli Bahrami 	}
3394f680cc6SAli Bahrami 
3404f680cc6SAli Bahrami 	retarr[retndx++] = NULL;
3414f680cc6SAli Bahrami 	assert(retndx <= MAX_RET);
3424f680cc6SAli Bahrami 	return (retarr);
3434f680cc6SAli Bahrami 
3444f680cc6SAli Bahrami #undef MAX_RET
3454f680cc6SAli Bahrami }
3464f680cc6SAli Bahrami 
3477c478bd9Sstevel@tonic-gate const char *
3484f680cc6SAli Bahrami conv_sec_type(uchar_t osabi, Half mach, Word sec, Conv_fmt_flags_t fmt_flags,
349d29b2c44Sab196087     Conv_inv_buf_t *inv_buf)
3507c478bd9Sstevel@tonic-gate {
3514f680cc6SAli Bahrami 	return (conv_map_ds(osabi, mach, sec,
3524f680cc6SAli Bahrami 	    sec_type_strings(osabi, mach, fmt_flags), fmt_flags, inv_buf));
353c13de8f6Sab196087 }
354c13de8f6Sab196087 
3554f680cc6SAli Bahrami conv_iter_ret_t
3564f680cc6SAli Bahrami conv_iter_sec_type(conv_iter_osabi_t osabi, Half mach,
3574f680cc6SAli Bahrami     Conv_fmt_flags_t fmt_flags, conv_iter_cb_t func, void *uvalue)
3584f680cc6SAli Bahrami {
3594f680cc6SAli Bahrami 	return (conv_iter_ds(osabi, mach,
3604f680cc6SAli Bahrami 	    sec_type_strings(osabi, mach, fmt_flags), func, uvalue));
3617c478bd9Sstevel@tonic-gate }
3627c478bd9Sstevel@tonic-gate 
3634f680cc6SAli Bahrami 
3644f680cc6SAli Bahrami /*
3654f680cc6SAli Bahrami  * Special iteration routine that returns strings for all symbol table
3664f680cc6SAli Bahrami  * sections.
3674f680cc6SAli Bahrami  */
3684f680cc6SAli Bahrami conv_iter_ret_t
3694f680cc6SAli Bahrami conv_iter_sec_symtab(conv_iter_osabi_t osabi, Conv_fmt_flags_t fmt_flags,
3704f680cc6SAli Bahrami     conv_iter_cb_t func, void *uvalue)
3714f680cc6SAli Bahrami {
3724f680cc6SAli Bahrami 	static const Val_desc2 symtab_cf[] = {
3734f680cc6SAli Bahrami 		{ SHT_SYMTAB,	0, 0,	MSG_SHT_SYMTAB_CF },
3744f680cc6SAli Bahrami 		{ SHT_DYNSYM,	0, 0,	MSG_SHT_DYNSYM_CF },
3754f680cc6SAli Bahrami 		{ SHT_SUNW_LDYNSYM, ELFOSABI_SOLARIS, 0,
3764f680cc6SAli Bahrami 					MSG_SHT_SUNW_LDYNSYM_CF },
3774f680cc6SAli Bahrami 
3784f680cc6SAli Bahrami 		{ 0 }
3794f680cc6SAli Bahrami 	};
3804f680cc6SAli Bahrami 	static const Val_desc2 symtab_nf[] = {
3814f680cc6SAli Bahrami 		{ SHT_SYMTAB,	0, 0,	MSG_SHT_SYMTAB_NF },
3824f680cc6SAli Bahrami 		{ SHT_DYNSYM,	0, 0,	MSG_SHT_DYNSYM_NF },
3834f680cc6SAli Bahrami 		{ SHT_SUNW_LDYNSYM, ELFOSABI_SOLARIS, 0,
3844f680cc6SAli Bahrami 					MSG_SHT_SUNW_LDYNSYM_NF },
3854f680cc6SAli Bahrami 
3864f680cc6SAli Bahrami 		{ 0 }
3874f680cc6SAli Bahrami 	};
3884f680cc6SAli Bahrami 
3894f680cc6SAli Bahrami 	const Val_desc2 *vdp;
3904f680cc6SAli Bahrami 
3914f680cc6SAli Bahrami 	vdp = (CONV_TYPE_FMT_ALT(fmt_flags) == CONV_FMT_ALT_NF) ?
3924f680cc6SAli Bahrami 	    symtab_nf : symtab_cf;
3934f680cc6SAli Bahrami 
3944f680cc6SAli Bahrami 	return (conv_iter_vd2(osabi, EM_NONE, vdp, func, uvalue));
3954f680cc6SAli Bahrami }
3964f680cc6SAli Bahrami 
3974f680cc6SAli Bahrami 
3984f680cc6SAli Bahrami const Val_desc2 *
3994f680cc6SAli Bahrami conv_sec_flags_strings(Conv_fmt_flags_t fmt_flags)
4004f680cc6SAli Bahrami {
401ba4e3c84Sab196087 #define	FLAGSZ	CONV_EXPN_FIELD_DEF_PREFIX_SIZE + \
4024f680cc6SAli Bahrami 	MSG_SHF_WRITE_CF_SIZE		+ CONV_EXPN_FIELD_DEF_SEP_SIZE + \
4034f680cc6SAli Bahrami 	MSG_SHF_ALLOC_CF_SIZE		+ CONV_EXPN_FIELD_DEF_SEP_SIZE + \
4044f680cc6SAli Bahrami 	MSG_SHF_EXECINSTR_CF_SIZE	+ CONV_EXPN_FIELD_DEF_SEP_SIZE + \
4054f680cc6SAli Bahrami 	MSG_SHF_MERGE_CF_SIZE		+ CONV_EXPN_FIELD_DEF_SEP_SIZE + \
4064f680cc6SAli Bahrami 	MSG_SHF_STRINGS_CF_SIZE		+ CONV_EXPN_FIELD_DEF_SEP_SIZE + \
4074f680cc6SAli Bahrami 	MSG_SHF_INFO_LINK_CF_SIZE	+ CONV_EXPN_FIELD_DEF_SEP_SIZE + \
4084f680cc6SAli Bahrami 	MSG_SHF_LINK_ORDER_CF_SIZE	+ CONV_EXPN_FIELD_DEF_SEP_SIZE + \
4094f680cc6SAli Bahrami 	MSG_SHF_OS_NONCONFORMING_CF_SIZE + CONV_EXPN_FIELD_DEF_SEP_SIZE + \
4104f680cc6SAli Bahrami 	MSG_SHF_GROUP_CF_SIZE		+ CONV_EXPN_FIELD_DEF_SEP_SIZE + \
4114f680cc6SAli Bahrami 	MSG_SHF_TLS_CF_SIZE		+ CONV_EXPN_FIELD_DEF_SEP_SIZE + \
4124f680cc6SAli Bahrami 	MSG_SHF_EXCLUDE_CF_SIZE		+ CONV_EXPN_FIELD_DEF_SEP_SIZE + \
4134f680cc6SAli Bahrami 	MSG_SHF_ORDERED_CF_SIZE		+ CONV_EXPN_FIELD_DEF_SEP_SIZE + \
4144f680cc6SAli Bahrami 	MSG_SHF_AMD64_LARGE_CF_SIZE	+ CONV_EXPN_FIELD_DEF_SEP_SIZE + \
415de777a60Sab196087 	CONV_INV_BUFSIZE + CONV_EXPN_FIELD_DEF_SUFFIX_SIZE
416de777a60Sab196087 
417de777a60Sab196087 	/*
418de777a60Sab196087 	 * Ensure that Conv_sec_flags_buf_t is large enough:
419de777a60Sab196087 	 *
4204f680cc6SAli Bahrami 	 * FLAGSZ is the real minimum size of the buffer required by
4214f680cc6SAli Bahrami 	 * conv_sec_flags(). However, Conv_sec_flags_buf_t uses
4224f680cc6SAli Bahrami 	 * CONV_SEC_FLAGS_BUFSIZE to set the buffer size. We do things this
4234f680cc6SAli Bahrami 	 * way because the definition of FLAGSZ uses information that is not
4244f680cc6SAli Bahrami 	 * available in the environment of other programs that include the
4254f680cc6SAli Bahrami 	 * conv.h header file.
426de777a60Sab196087 	 */
4276a074c93Sab196087 #if (CONV_SEC_FLAGS_BUFSIZE != FLAGSZ) && !defined(__lint)
4286a074c93Sab196087 #define	REPORT_BUFSIZE FLAGSZ
4296a074c93Sab196087 #include "report_bufsize.h"
4306a074c93Sab196087 #error "CONV_SEC_FLAGS_BUFSIZE does not match FLAGSZ"
431de777a60Sab196087 #endif
4327c478bd9Sstevel@tonic-gate 
4334f680cc6SAli Bahrami #define	ALL	ELFOSABI_NONE, EM_NONE
4344f680cc6SAli Bahrami #define	SOL	ELFOSABI_SOLARIS, EM_NONE
4354f680cc6SAli Bahrami #define	AMD	ELFOSABI_NONE, EM_AMD64
4364f680cc6SAli Bahrami 
4374f680cc6SAli Bahrami 	static const Val_desc2 vda_cf[] = {
4384f680cc6SAli Bahrami 		{ SHF_WRITE,		ALL,	MSG_SHF_WRITE_CF },
4394f680cc6SAli Bahrami 		{ SHF_ALLOC,		ALL,	MSG_SHF_ALLOC_CF },
4404f680cc6SAli Bahrami 		{ SHF_EXECINSTR,	ALL,	MSG_SHF_EXECINSTR_CF },
4414f680cc6SAli Bahrami 		{ SHF_MERGE,		ALL,	MSG_SHF_MERGE_CF },
4424f680cc6SAli Bahrami 		{ SHF_STRINGS,		ALL,	MSG_SHF_STRINGS_CF },
4434f680cc6SAli Bahrami 		{ SHF_INFO_LINK,	ALL,	MSG_SHF_INFO_LINK_CF },
4444f680cc6SAli Bahrami 		{ SHF_LINK_ORDER,	ALL,	MSG_SHF_LINK_ORDER_CF },
4454f680cc6SAli Bahrami 		{ SHF_OS_NONCONFORMING,	ALL,	MSG_SHF_OS_NONCONFORMING_CF },
4464f680cc6SAli Bahrami 		{ SHF_GROUP,		ALL,	MSG_SHF_GROUP_CF },
4474f680cc6SAli Bahrami 		{ SHF_TLS,		ALL,	MSG_SHF_TLS_CF },
4484f680cc6SAli Bahrami 		{ SHF_EXCLUDE,		SOL,	MSG_SHF_EXCLUDE_CF },
4494f680cc6SAli Bahrami 		{ SHF_ORDERED,		SOL,	MSG_SHF_ORDERED_CF },
4504f680cc6SAli Bahrami 		{ SHF_AMD64_LARGE,	AMD,	MSG_SHF_AMD64_LARGE_CF },
4515aefb655Srie 		{ 0,			0 }
4525aefb655Srie 	};
4534f680cc6SAli Bahrami 	static const Val_desc2 vda_nf[] = {
4544f680cc6SAli Bahrami 		{ SHF_WRITE,		ALL,	MSG_SHF_WRITE_NF },
4554f680cc6SAli Bahrami 		{ SHF_ALLOC,		ALL,	MSG_SHF_ALLOC_NF },
4564f680cc6SAli Bahrami 		{ SHF_EXECINSTR,	ALL,	MSG_SHF_EXECINSTR_NF },
4574f680cc6SAli Bahrami 		{ SHF_MERGE,		ALL,	MSG_SHF_MERGE_NF },
4584f680cc6SAli Bahrami 		{ SHF_STRINGS,		ALL,	MSG_SHF_STRINGS_NF },
4594f680cc6SAli Bahrami 		{ SHF_INFO_LINK,	ALL,	MSG_SHF_INFO_LINK_NF },
4604f680cc6SAli Bahrami 		{ SHF_LINK_ORDER,	ALL,	MSG_SHF_LINK_ORDER_NF },
4614f680cc6SAli Bahrami 		{ SHF_OS_NONCONFORMING,	ALL,	MSG_SHF_OS_NONCONFORMING_NF },
4624f680cc6SAli Bahrami 		{ SHF_GROUP,		ALL,	MSG_SHF_GROUP_NF },
4634f680cc6SAli Bahrami 		{ SHF_TLS,		ALL,	MSG_SHF_TLS_NF },
4644f680cc6SAli Bahrami 		{ SHF_EXCLUDE,		SOL,	MSG_SHF_EXCLUDE_NF },
4654f680cc6SAli Bahrami 		{ SHF_ORDERED,		SOL,	MSG_SHF_ORDERED_NF },
4664f680cc6SAli Bahrami 		{ SHF_AMD64_LARGE,	AMD,	MSG_SHF_AMD64_LARGE_NF },
4674f680cc6SAli Bahrami 		{ 0,			0 }
4684f680cc6SAli Bahrami 	};
4697c478bd9Sstevel@tonic-gate 
4704f680cc6SAli Bahrami 	return ((CONV_TYPE_FMT_ALT(fmt_flags) == CONV_FMT_ALT_NF) ?
4714f680cc6SAli Bahrami 	    vda_nf : vda_cf);
4727c478bd9Sstevel@tonic-gate 
4734f680cc6SAli Bahrami #undef ALL
4744f680cc6SAli Bahrami #undef SOL
4754f680cc6SAli Bahrami #undef AMD
4767c478bd9Sstevel@tonic-gate }
4777c478bd9Sstevel@tonic-gate 
4784f680cc6SAli Bahrami conv_iter_ret_t
4794f680cc6SAli Bahrami conv_iter_sec_flags(conv_iter_osabi_t osabi, Half mach,
4804f680cc6SAli Bahrami     Conv_fmt_flags_t fmt_flags, conv_iter_cb_t func, void *uvalue)
4817c478bd9Sstevel@tonic-gate {
4824f680cc6SAli Bahrami 	static const Msg amd64_alias_cf[] = { MSG_SHF_X86_64_LARGE_CF };
4834f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_msg_amd64_alias_cf = {
4844f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHF_X86_64_LARGE, amd64_alias_cf) };
4854f680cc6SAli Bahrami 	static const conv_ds_t	*ds_amd64_alias_cf[] = {
4864f680cc6SAli Bahrami 	    CONV_DS_ADDR(ds_msg_amd64_alias_cf), NULL };
4874f680cc6SAli Bahrami 
4884f680cc6SAli Bahrami 	static const Msg amd64_alias_nf[] = { MSG_SHF_X86_64_LARGE_NF };
4894f680cc6SAli Bahrami 	static const conv_ds_msg_t ds_msg_amd64_alias_nf = {
4904f680cc6SAli Bahrami 	    CONV_DS_MSG_INIT(SHF_X86_64_LARGE, amd64_alias_nf) };
4914f680cc6SAli Bahrami 	static const conv_ds_t	*ds_amd64_alias_nf[] = {
4924f680cc6SAli Bahrami 	    CONV_DS_ADDR(ds_msg_amd64_alias_nf), NULL };
4934f680cc6SAli Bahrami 
4944f680cc6SAli Bahrami 
4954f680cc6SAli Bahrami 	if (conv_iter_vd2(osabi, mach, conv_sec_flags_strings(fmt_flags),
4964f680cc6SAli Bahrami 	    func, uvalue) == CONV_ITER_DONE)
4974f680cc6SAli Bahrami 		return (CONV_ITER_DONE);
4984f680cc6SAli Bahrami 
4994f680cc6SAli Bahrami 	/* SHF_AMD64_LARGE is also known as SHF_X86_64_LARGE */
5004f680cc6SAli Bahrami 	if (mach == EM_AMD64) {
5014f680cc6SAli Bahrami 		const conv_ds_t **ds;
5024f680cc6SAli Bahrami 
5034f680cc6SAli Bahrami 		ds = (CONV_TYPE_FMT_ALT(fmt_flags) == CONV_FMT_ALT_NF) ?
5044f680cc6SAli Bahrami 		    ds_amd64_alias_nf : ds_amd64_alias_cf;
5054f680cc6SAli Bahrami 
5064f680cc6SAli Bahrami 		return (conv_iter_ds(ELFOSABI_NONE, mach, ds, func, uvalue));
5077c478bd9Sstevel@tonic-gate 	}
508de777a60Sab196087 
5094f680cc6SAli Bahrami 	return (CONV_ITER_CONT);
5107c478bd9Sstevel@tonic-gate }
511