elf.c revision 5aefb6555731130ca4fd295960123d71f2d21fe8
080575042aba2197b425ebfd52061dea061a9aa1xy/*
080575042aba2197b425ebfd52061dea061a9aa1xy * CDDL HEADER START
080575042aba2197b425ebfd52061dea061a9aa1xy *
080575042aba2197b425ebfd52061dea061a9aa1xy * The contents of this file are subject to the terms of the
080575042aba2197b425ebfd52061dea061a9aa1xy * Common Development and Distribution License (the "License").
080575042aba2197b425ebfd52061dea061a9aa1xy * You may not use this file except in compliance with the License.
080575042aba2197b425ebfd52061dea061a9aa1xy *
080575042aba2197b425ebfd52061dea061a9aa1xy * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
d5c3073dbbd835e1e9b7dca0c6c770cf3cc20afachenlu chen - Sun Microsystems - Beijing China * or http://www.opensolaris.org/os/licensing.
080575042aba2197b425ebfd52061dea061a9aa1xy * See the License for the specific language governing permissions
080575042aba2197b425ebfd52061dea061a9aa1xy * and limitations under the License.
080575042aba2197b425ebfd52061dea061a9aa1xy *
080575042aba2197b425ebfd52061dea061a9aa1xy * When distributing Covered Code, include this CDDL HEADER in each
080575042aba2197b425ebfd52061dea061a9aa1xy * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
080575042aba2197b425ebfd52061dea061a9aa1xy * If applicable, add the following below this CDDL HEADER, with the
080575042aba2197b425ebfd52061dea061a9aa1xy * fields enclosed by brackets "[]" replaced with your own identifying
080575042aba2197b425ebfd52061dea061a9aa1xy * information: Portions Copyright [yyyy] [name of copyright owner]
080575042aba2197b425ebfd52061dea061a9aa1xy *
080575042aba2197b425ebfd52061dea061a9aa1xy * CDDL HEADER END
080575042aba2197b425ebfd52061dea061a9aa1xy */
080575042aba2197b425ebfd52061dea061a9aa1xy
3f64cd552fee350c8075ec62765e9a6f9caef1a8guoqing zhu - Sun Microsystems - Beijing China/*
080575042aba2197b425ebfd52061dea061a9aa1xy * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi * Use is subject to license terms.
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi */
080575042aba2197b425ebfd52061dea061a9aa1xy#pragma ident "%Z%%M% %I% %E% SMI"
080575042aba2197b425ebfd52061dea061a9aa1xy
080575042aba2197b425ebfd52061dea061a9aa1xy/*
080575042aba2197b425ebfd52061dea061a9aa1xy * String conversion routines for ELF header attributes.
080575042aba2197b425ebfd52061dea061a9aa1xy */
080575042aba2197b425ebfd52061dea061a9aa1xy#include <stdio.h>
080575042aba2197b425ebfd52061dea061a9aa1xy#include <string.h>
080575042aba2197b425ebfd52061dea061a9aa1xy#include "_conv.h"
080575042aba2197b425ebfd52061dea061a9aa1xy#include "elf_msg.h"
080575042aba2197b425ebfd52061dea061a9aa1xy#include <sys/elf_SPARC.h>
080575042aba2197b425ebfd52061dea061a9aa1xy
080575042aba2197b425ebfd52061dea061a9aa1xyconst char *
080575042aba2197b425ebfd52061dea061a9aa1xyconv_ehdr_class(uchar_t class)
080575042aba2197b425ebfd52061dea061a9aa1xy{
080575042aba2197b425ebfd52061dea061a9aa1xy static char string[CONV_INV_STRSIZE];
080575042aba2197b425ebfd52061dea061a9aa1xy static const Msg classes[] = {
080575042aba2197b425ebfd52061dea061a9aa1xy MSG_ELFCLASSNONE, MSG_ELFCLASS32, MSG_ELFCLASS64
080575042aba2197b425ebfd52061dea061a9aa1xy };
080575042aba2197b425ebfd52061dea061a9aa1xy
080575042aba2197b425ebfd52061dea061a9aa1xy if (class >= ELFCLASSNUM)
080575042aba2197b425ebfd52061dea061a9aa1xy return (conv_invalid_val(string, CONV_INV_STRSIZE, class, 0));
080575042aba2197b425ebfd52061dea061a9aa1xy else
080575042aba2197b425ebfd52061dea061a9aa1xy return (MSG_ORIG(classes[class]));
25f2d433de915875c8393f0b0dc14aa155997ad0xy}
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu
caf05df5c10c960028f122b1b02a3f7d8f892c31Miles Xu, Sun Microsystemsconst char *
75eba5b6d79ed4d2ce3daf7b2806306b6b69a938Robert Mustacchiconv_ehdr_data(uchar_t data)
25f2d433de915875c8393f0b0dc14aa155997ad0xy{
080575042aba2197b425ebfd52061dea061a9aa1xy static char string[CONV_INV_STRSIZE];
080575042aba2197b425ebfd52061dea061a9aa1xy static const Msg datas[] = {
c124a83e09115de88ecccd4f689983f42a1d53bdRobert Mustacchi MSG_ELFDATANONE, MSG_ELFDATA2LSB, MSG_ELFDATA2MSB
080575042aba2197b425ebfd52061dea061a9aa1xy };
4d7379630d53d9992780329b674af8c85935e858xiangtao you - Sun Microsystems - Beijing China
080575042aba2197b425ebfd52061dea061a9aa1xy if (data >= ELFDATANUM)
25f2d433de915875c8393f0b0dc14aa155997ad0xy return (conv_invalid_val(string, CONV_INV_STRSIZE, data, 0));
25f2d433de915875c8393f0b0dc14aa155997ad0xy else
25f2d433de915875c8393f0b0dc14aa155997ad0xy return (MSG_ORIG(datas[data]));
25f2d433de915875c8393f0b0dc14aa155997ad0xy}
25f2d433de915875c8393f0b0dc14aa155997ad0xy
25f2d433de915875c8393f0b0dc14aa155997ad0xystatic const Msg machines[EM_NUM] = {
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EM_NONE, MSG_EM_M32, MSG_EM_SPARC,
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EM_386, MSG_EM_68K, MSG_EM_88K,
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EM_486, MSG_EM_860, MSG_EM_MIPS,
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EM_UNKNOWN9, MSG_EM_MIPS_RS3_LE, MSG_EM_RS6000,
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EM_UNKNOWN12, MSG_EM_UNKNOWN13, MSG_EM_UNKNOWN14,
080575042aba2197b425ebfd52061dea061a9aa1xy MSG_EM_PA_RISC, MSG_EM_nCUBE, MSG_EM_VPP500,
080575042aba2197b425ebfd52061dea061a9aa1xy MSG_EM_SPARC32PLUS, MSG_EM_UNKNOWN19, MSG_EM_PPC,
080575042aba2197b425ebfd52061dea061a9aa1xy MSG_EM_PPC64, MSG_EM_UNKNOWN22, MSG_EM_UNKNOWN23,
080575042aba2197b425ebfd52061dea061a9aa1xy MSG_EM_UNKNOWN24, MSG_EM_UNKNOWN25, MSG_EM_UNKNOWN26,
080575042aba2197b425ebfd52061dea061a9aa1xy MSG_EM_UNKNOWN27, MSG_EM_UNKNOWN28, MSG_EM_UNKNOWN29,
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EM_UNKNOWN30, MSG_EM_UNKNOWN31, MSG_EM_UNKNOWN32,
080575042aba2197b425ebfd52061dea061a9aa1xy MSG_EM_UNKNOWN33, MSG_EM_UNKNOWN34, MSG_EM_UNKNOWN35,
080575042aba2197b425ebfd52061dea061a9aa1xy MSG_EM_Y800, MSG_EM_FR20, MSG_EM_RH32,
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EM_RCE, MSG_EM_ARM, MSG_EM_ALPHA,
080575042aba2197b425ebfd52061dea061a9aa1xy MSG_EM_SH, MSG_EM_SPARCV9, MSG_EM_TRICORE,
4d7379630d53d9992780329b674af8c85935e858xiangtao you - Sun Microsystems - Beijing China MSG_EM_ARC, MSG_EM_H8_300, MSG_EM_H8_300H,
4d7379630d53d9992780329b674af8c85935e858xiangtao you - Sun Microsystems - Beijing China MSG_EM_H8S, MSG_EM_H8_500, MSG_EM_IA_64,
75eba5b6d79ed4d2ce3daf7b2806306b6b69a938Robert Mustacchi MSG_EM_MIPS_X, MSG_EM_COLDFIRE, MSG_EM_68HC12,
75eba5b6d79ed4d2ce3daf7b2806306b6b69a938Robert Mustacchi MSG_EM_MMA, MSG_EM_PCP, MSG_EM_NCPU,
caf05df5c10c960028f122b1b02a3f7d8f892c31Miles Xu, Sun Microsystems MSG_EM_NDR1, MSG_EM_STARCORE, MSG_EM_ME16,
080575042aba2197b425ebfd52061dea061a9aa1xy MSG_EM_ST100, MSG_EM_TINYJ, MSG_EM_AMD64,
080575042aba2197b425ebfd52061dea061a9aa1xy MSG_EM_UNKNOWN63, MSG_EM_UNKNOWN64, MSG_EM_UNKNOWN65,
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EM_FX66, MSG_EM_ST9PLUS, MSG_EM_ST7,
4d7379630d53d9992780329b674af8c85935e858xiangtao you - Sun Microsystems - Beijing China MSG_EM_68HC16, MSG_EM_68HC11, MSG_EM_68HC08,
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EM_68HC05, MSG_EM_SVX, MSG_EM_ST19,
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EM_VAX, MSG_EM_CRIS, MSG_EM_JAVELIN,
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EM_FIREPATH, MSG_EM_ZSP, MSG_EM_MMIX,
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EM_HUANY, MSG_EM_PRISM, MSG_EM_AVR,
ede5269ebe7fa3787cc9b58c3781b639c578f93dchenlu chen - Sun Microsystems - Beijing China MSG_EM_FR30, MSG_EM_D10V, MSG_EM_D30V,
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EM_V850, MSG_EM_M32R, MSG_EM_MN10300,
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EM_MN10200, MSG_EM_PJ, MSG_EM_OPENRISC,
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EM_ARC_A5, MSG_EM_XTENSA
25f2d433de915875c8393f0b0dc14aa155997ad0xy};
25f2d433de915875c8393f0b0dc14aa155997ad0xy#if (EM_NUM != (EM_XTENSA + 1))
25f2d433de915875c8393f0b0dc14aa155997ad0xy#error "EM_NUM has grown"
25f2d433de915875c8393f0b0dc14aa155997ad0xy#endif
25f2d433de915875c8393f0b0dc14aa155997ad0xy
592a4d85662412bade15f3d9e9e0cbcf8514348cccconst char *
592a4d85662412bade15f3d9e9e0cbcf8514348cccconv_ehdr_mach(Half machine)
592a4d85662412bade15f3d9e9e0cbcf8514348ccc{
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu static char string[CONV_INV_STRSIZE];
25f2d433de915875c8393f0b0dc14aa155997ad0xy
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi if (machine >= (EM_NUM))
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi return (conv_invalid_val(string, CONV_INV_STRSIZE, machine, 0));
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi else
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi return (MSG_ORIG(machines[machine]));
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi}
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchiconst char *
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchiconv_ehdr_type(Half etype)
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi{
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi static char string[CONV_INV_STRSIZE];
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi static const Msg etypes[] = {
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi MSG_ET_NONE, MSG_ET_REL, MSG_ET_EXEC,
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi MSG_ET_DYN, MSG_ET_CORE
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi };
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi
25f2d433de915875c8393f0b0dc14aa155997ad0xy if (etype == ET_SUNWPSEUDO)
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi return (MSG_ORIG(MSG_ET_SUNWPSEUDO));
25f2d433de915875c8393f0b0dc14aa155997ad0xy else if (etype >= ET_NUM)
25f2d433de915875c8393f0b0dc14aa155997ad0xy return (conv_invalid_val(string, CONV_INV_STRSIZE, etype, 0));
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu else
080575042aba2197b425ebfd52061dea061a9aa1xy return (MSG_ORIG(etypes[etype]));
080575042aba2197b425ebfd52061dea061a9aa1xy}
25f2d433de915875c8393f0b0dc14aa155997ad0xy
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xuconst char *
25f2d433de915875c8393f0b0dc14aa155997ad0xyconv_ehdr_vers(Word version)
080575042aba2197b425ebfd52061dea061a9aa1xy{
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi static char string[CONV_INV_STRSIZE];
080575042aba2197b425ebfd52061dea061a9aa1xy static const Msg versions[] = {
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EV_NONE, MSG_EV_CURRENT
25f2d433de915875c8393f0b0dc14aa155997ad0xy };
25f2d433de915875c8393f0b0dc14aa155997ad0xy
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu if (version >= EV_NUM)
25f2d433de915875c8393f0b0dc14aa155997ad0xy return (conv_invalid_val(string, CONV_INV_STRSIZE, version, 0));
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu else
25f2d433de915875c8393f0b0dc14aa155997ad0xy return (MSG_ORIG(versions[version]));
080575042aba2197b425ebfd52061dea061a9aa1xy}
25f2d433de915875c8393f0b0dc14aa155997ad0xy
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchi#define EFLAGSZ MSG_GBL_OSQBRKT_SIZE + \
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EF_SPARCV9_TSO_SIZE + \
25f2d433de915875c8393f0b0dc14aa155997ad0xy MSG_EF_SPARC_SUN_US1_SIZE + \
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu MSG_EF_SPARC_HAL_R1_SIZE + \
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu MSG_EF_SPARC_SUN_US3_SIZE + \
080575042aba2197b425ebfd52061dea061a9aa1xy CONV_INV_STRSIZE + MSG_GBL_CSQBRKT_SIZE
080575042aba2197b425ebfd52061dea061a9aa1xy
25f2d433de915875c8393f0b0dc14aa155997ad0xy/*
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu * Make a string representation of the e_flags field.
25f2d433de915875c8393f0b0dc14aa155997ad0xy */
080575042aba2197b425ebfd52061dea061a9aa1xyconst char *
49b7860084dbba18bc00b29413d6182197f9fe93Robert Mustacchiconv_ehdr_flags(Half mach, Word flags)
080575042aba2197b425ebfd52061dea061a9aa1xy{
25f2d433de915875c8393f0b0dc14aa155997ad0xy static char string[EFLAGSZ];
25f2d433de915875c8393f0b0dc14aa155997ad0xy static Val_desc vda[] = {
25f2d433de915875c8393f0b0dc14aa155997ad0xy { EF_SPARC_32PLUS, MSG_ORIG(MSG_EF_SPARC_32PLUS) },
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu { EF_SPARC_SUN_US1, MSG_ORIG(MSG_EF_SPARC_SUN_US1) },
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu { EF_SPARC_HAL_R1, MSG_ORIG(MSG_EF_SPARC_HAL_R1) },
25f2d433de915875c8393f0b0dc14aa155997ad0xy { EF_SPARC_SUN_US3, MSG_ORIG(MSG_EF_SPARC_SUN_US3) },
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu { 0, 0 }
25f2d433de915875c8393f0b0dc14aa155997ad0xy };
080575042aba2197b425ebfd52061dea061a9aa1xy static const Msg mm_flags[] = {
080575042aba2197b425ebfd52061dea061a9aa1xy MSG_EF_SPARCV9_TSO, MSG_EF_SPARCV9_PSO,
080575042aba2197b425ebfd52061dea061a9aa1xy MSG_EF_SPARCV9_RMO
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu };
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu Word _flags = flags;
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu /*
080575042aba2197b425ebfd52061dea061a9aa1xy * Non-SPARC architectures presently provide no known flags.
080575042aba2197b425ebfd52061dea061a9aa1xy */
25f2d433de915875c8393f0b0dc14aa155997ad0xy if ((mach == EM_SPARCV9) || (((mach == EM_SPARC) ||
080575042aba2197b425ebfd52061dea061a9aa1xy (mach == EM_SPARC32PLUS)) && flags)) {
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu /*
080575042aba2197b425ebfd52061dea061a9aa1xy * Valid vendor extension bits for SPARCV9. These must be
25f2d433de915875c8393f0b0dc14aa155997ad0xy * updated along with elf_SPARC.h.
080575042aba2197b425ebfd52061dea061a9aa1xy */
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu (void) strcpy(string, MSG_ORIG(MSG_GBL_OSQBRKT));
080575042aba2197b425ebfd52061dea061a9aa1xy
25f2d433de915875c8393f0b0dc14aa155997ad0xy if ((mach == EM_SPARCV9) && (flags <= EF_SPARCV9_RMO)) {
080575042aba2197b425ebfd52061dea061a9aa1xy if (strlcat(string,
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu MSG_ORIG(mm_flags[flags & EF_SPARCV9_MM]),
080575042aba2197b425ebfd52061dea061a9aa1xy EFLAGSZ) >= EFLAGSZ)
25f2d433de915875c8393f0b0dc14aa155997ad0xy return (conv_invalid_val(string, EFLAGSZ,
080575042aba2197b425ebfd52061dea061a9aa1xy flags, 0));
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu _flags &= ~EF_SPARCV9_MM;
080575042aba2197b425ebfd52061dea061a9aa1xy }
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu if (conv_expn_field(string, EFLAGSZ, vda, flags, _flags, 0, 0))
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu (void) strlcat(string, MSG_ORIG(MSG_GBL_CSQBRKT),
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu EFLAGSZ);
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu return (string);
fe62dec3a38f1f79ffe68417df75dbbb58135bb7Chen-Liang Xu }
25f2d433de915875c8393f0b0dc14aa155997ad0xy return (conv_invalid_val(string, EFLAGSZ, flags, CONV_INV_DECIMAL));
25f2d433de915875c8393f0b0dc14aa155997ad0xy}
25f2d433de915875c8393f0b0dc14aa155997ad0xy
25f2d433de915875c8393f0b0dc14aa155997ad0xy/*
25f2d433de915875c8393f0b0dc14aa155997ad0xy * A generic means of returning additional information for a rejected file in
25f2d433de915875c8393f0b0dc14aa155997ad0xy * terms of a string.
25f2d433de915875c8393f0b0dc14aa155997ad0xy */
25f2d433de915875c8393f0b0dc14aa155997ad0xyconst char *
4d7379630d53d9992780329b674af8c85935e858xiangtao you - Sun Microsystems - Beijing Chinaconv_reject_desc(Rej_desc * rej)
080575042aba2197b425ebfd52061dea061a9aa1xy{
d5c3073dbbd835e1e9b7dca0c6c770cf3cc20afachenlu chen - Sun Microsystems - Beijing China static char string[CONV_INV_STRSIZE];
d5c3073dbbd835e1e9b7dca0c6c770cf3cc20afachenlu chen - Sun Microsystems - Beijing China
d5c3073dbbd835e1e9b7dca0c6c770cf3cc20afachenlu chen - Sun Microsystems - Beijing China ushort_t type = rej->rej_type;
d5c3073dbbd835e1e9b7dca0c6c770cf3cc20afachenlu chen - Sun Microsystems - Beijing China uint_t info = rej->rej_info;
080575042aba2197b425ebfd52061dea061a9aa1xy
25f2d433de915875c8393f0b0dc14aa155997ad0xy if (type == SGS_REJ_MACH)
25f2d433de915875c8393f0b0dc14aa155997ad0xy /* LINTED */
080575042aba2197b425ebfd52061dea061a9aa1xy return (conv_ehdr_mach((Half)info));
3f64cd552fee350c8075ec62765e9a6f9caef1a8guoqing zhu - Sun Microsystems - Beijing China else if (type == SGS_REJ_CLASS)
25f2d433de915875c8393f0b0dc14aa155997ad0xy /* LINTED */
080575042aba2197b425ebfd52061dea061a9aa1xy return (conv_ehdr_class((uchar_t)info));
080575042aba2197b425ebfd52061dea061a9aa1xy else if (type == SGS_REJ_DATA)
caf05df5c10c960028f122b1b02a3f7d8f892c31Miles Xu, Sun Microsystems /* LINTED */
caf05df5c10c960028f122b1b02a3f7d8f892c31Miles Xu, Sun Microsystems return (conv_ehdr_data((uchar_t)info));
caf05df5c10c960028f122b1b02a3f7d8f892c31Miles Xu, Sun Microsystems else if (type == SGS_REJ_TYPE)
caf05df5c10c960028f122b1b02a3f7d8f892c31Miles Xu, Sun Microsystems /* LINTED */
caf05df5c10c960028f122b1b02a3f7d8f892c31Miles Xu, Sun Microsystems return (conv_ehdr_type((Half)info));
caf05df5c10c960028f122b1b02a3f7d8f892c31Miles Xu, Sun Microsystems else if ((type == SGS_REJ_BADFLAG) || (type == SGS_REJ_MISFLAG) ||
caf05df5c10c960028f122b1b02a3f7d8f892c31Miles Xu, Sun Microsystems (type == SGS_REJ_HAL) || (type == SGS_REJ_US3))
caf05df5c10c960028f122b1b02a3f7d8f892c31Miles Xu, Sun Microsystems /*
caf05df5c10c960028f122b1b02a3f7d8f892c31Miles Xu, Sun Microsystems * Only called from ld.so.1, thus M_MACH is hardcoded.
caf05df5c10c960028f122b1b02a3f7d8f892c31Miles Xu, Sun Microsystems */
080575042aba2197b425ebfd52061dea061a9aa1xy return (conv_ehdr_flags(M_MACH, (Word)info));
080575042aba2197b425ebfd52061dea061a9aa1xy else if (type == SGS_REJ_UNKFILE)
080575042aba2197b425ebfd52061dea061a9aa1xy return ((const char *)0);
25f2d433de915875c8393f0b0dc14aa155997ad0xy else if ((type == SGS_REJ_STR) || (type == SGS_REJ_HWCAP_1)) {
3f64cd552fee350c8075ec62765e9a6f9caef1a8guoqing zhu - Sun Microsystems - Beijing China if (rej->rej_str)
3f64cd552fee350c8075ec62765e9a6f9caef1a8guoqing zhu - Sun Microsystems - Beijing China return ((const char *)rej->rej_str);
3f64cd552fee350c8075ec62765e9a6f9caef1a8guoqing zhu - Sun Microsystems - Beijing China else
3f64cd552fee350c8075ec62765e9a6f9caef1a8guoqing zhu - Sun Microsystems - Beijing China return (MSG_ORIG(MSG_STR_EMPTY));
3f64cd552fee350c8075ec62765e9a6f9caef1a8guoqing zhu - Sun Microsystems - Beijing China } else
3f64cd552fee350c8075ec62765e9a6f9caef1a8guoqing zhu - Sun Microsystems - Beijing China return (conv_invalid_val(string, CONV_INV_STRSIZE, info,
3f64cd552fee350c8075ec62765e9a6f9caef1a8guoqing zhu - Sun Microsystems - Beijing China CONV_INV_DECIMAL));
080575042aba2197b425ebfd52061dea061a9aa1xy}
080575042aba2197b425ebfd52061dea061a9aa1xy