1*c2c65e21Sny155746 /* 2*c2c65e21Sny155746 * CDDL HEADER START 3*c2c65e21Sny155746 * 4*c2c65e21Sny155746 * The contents of this file are subject to the terms of the 5*c2c65e21Sny155746 * Common Development and Distribution License (the "License"). 6*c2c65e21Sny155746 * You may not use this file except in compliance with the License. 7*c2c65e21Sny155746 * 8*c2c65e21Sny155746 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*c2c65e21Sny155746 * or http://www.opensolaris.org/os/licensing. 10*c2c65e21Sny155746 * See the License for the specific language governing permissions 11*c2c65e21Sny155746 * and limitations under the License. 12*c2c65e21Sny155746 * 13*c2c65e21Sny155746 * When distributing Covered Code, include this CDDL HEADER in each 14*c2c65e21Sny155746 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*c2c65e21Sny155746 * If applicable, add the following below this CDDL HEADER, with the 16*c2c65e21Sny155746 * fields enclosed by brackets "[]" replaced with your own identifying 17*c2c65e21Sny155746 * information: Portions Copyright [yyyy] [name of copyright owner] 18*c2c65e21Sny155746 * 19*c2c65e21Sny155746 * CDDL HEADER END 20*c2c65e21Sny155746 */ 21*c2c65e21Sny155746 /* 22*c2c65e21Sny155746 * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 23*c2c65e21Sny155746 * Use is subject to license terms. 24*c2c65e21Sny155746 */ 25*c2c65e21Sny155746 26*c2c65e21Sny155746 #ifndef _ELF_READ_H 27*c2c65e21Sny155746 #define _ELF_READ_H 28*c2c65e21Sny155746 29*c2c65e21Sny155746 #pragma ident "%Z%%M% %I% %E% SMI" 30*c2c65e21Sny155746 31*c2c65e21Sny155746 #define BUFSZ 128 32*c2c65e21Sny155746 typedef struct Elf_Info { 33*c2c65e21Sny155746 boolean_t dynamic; /* dymanically linked? */ 34*c2c65e21Sny155746 unsigned core_type; /* core? what type of core? */ 35*c2c65e21Sny155746 unsigned stripped; /* symtab, debug info */ 36*c2c65e21Sny155746 unsigned flags; /* e_flags */ 37*c2c65e21Sny155746 unsigned machine; /* e_machine */ 38*c2c65e21Sny155746 unsigned type; /* e_type */ 39*c2c65e21Sny155746 int elffd; /* fd of file being processed */ 40*c2c65e21Sny155746 char fname[PRFNSZ]; /* name of process that dumped core */ 41*c2c65e21Sny155746 char cap_str[BUFSZ]; /* hw/sw capabilities */ 42*c2c65e21Sny155746 char *file; /* file being processed */ 43*c2c65e21Sny155746 } Elf_Info; 44*c2c65e21Sny155746 45*c2c65e21Sny155746 /* values for Elf_Info.stripped */ 46*c2c65e21Sny155746 #define E_DBGINF 0x01 47*c2c65e21Sny155746 #define E_SYMTAB 0x02 48*c2c65e21Sny155746 #define E_NOSTRIP 0x03 49*c2c65e21Sny155746 50*c2c65e21Sny155746 /* values for Elf_Info.core_type; */ 51*c2c65e21Sny155746 #define EC_NOTCORE 0x0 52*c2c65e21Sny155746 #define EC_OLDCORE 0x1 53*c2c65e21Sny155746 #define EC_NEWCORE 0x2 54*c2c65e21Sny155746 55*c2c65e21Sny155746 /* elf file processing errors */ 56*c2c65e21Sny155746 #define ELF_ERR_ELFCAP1 gettext("%s: %s zero size or zero entry ELF " \ 57*c2c65e21Sny155746 "section - ELF capabilities ignored\n") 58*c2c65e21Sny155746 #define ELF_ERR_ELFCAP2 gettext("%s: %s: can't read ELF capabilities " \ 59*c2c65e21Sny155746 "data - ELF capabilities ignored\n") 60*c2c65e21Sny155746 61*c2c65e21Sny155746 extern int is_in_list(char *str); 62*c2c65e21Sny155746 63*c2c65e21Sny155746 /* return status for elf_read and its helper functions */ 64*c2c65e21Sny155746 #define ELF_READ_OKAY 1 65*c2c65e21Sny155746 #define ELF_READ_FAIL 0 66*c2c65e21Sny155746 67*c2c65e21Sny155746 #if defined(_ELF64) 68*c2c65e21Sny155746 69*c2c65e21Sny155746 #define Elf_Ehdr Elf64_Ehdr 70*c2c65e21Sny155746 #define Elf_Shdr Elf64_Shdr 71*c2c65e21Sny155746 #define Elf_Phdr Elf64_Phdr 72*c2c65e21Sny155746 #define Elf_Cap Elf64_Cap 73*c2c65e21Sny155746 #define Elf_Nhdr Elf64_Nhdr 74*c2c65e21Sny155746 75*c2c65e21Sny155746 #define elf_read elf_read64 76*c2c65e21Sny155746 #define elf_xlatetom elf64_xlatetom 77*c2c65e21Sny155746 #define elf_fsize elf64_fsize 78*c2c65e21Sny155746 #define get_class get_class64 79*c2c65e21Sny155746 #define get_version get_version64 80*c2c65e21Sny155746 #define get_format get_format64 81*c2c65e21Sny155746 82*c2c65e21Sny155746 #else 83*c2c65e21Sny155746 84*c2c65e21Sny155746 #define Elf_Ehdr Elf32_Ehdr 85*c2c65e21Sny155746 #define Elf_Shdr Elf32_Shdr 86*c2c65e21Sny155746 #define Elf_Phdr Elf32_Phdr 87*c2c65e21Sny155746 #define Elf_Cap Elf32_Cap 88*c2c65e21Sny155746 #define Elf_Nhdr Elf32_Nhdr 89*c2c65e21Sny155746 90*c2c65e21Sny155746 #define elf_read elf_read32 91*c2c65e21Sny155746 #define elf_xlatetom elf32_xlatetom 92*c2c65e21Sny155746 #define elf_fsize elf32_fsize 93*c2c65e21Sny155746 #define get_class get_class32 94*c2c65e21Sny155746 #define get_version get_version32 95*c2c65e21Sny155746 #define get_format get_format32 96*c2c65e21Sny155746 97*c2c65e21Sny155746 #endif 98*c2c65e21Sny155746 99*c2c65e21Sny155746 /* so lint can understand elf_read64 is defined */ 100*c2c65e21Sny155746 #ifdef lint 101*c2c65e21Sny155746 #define elf_read64 elf_read 102*c2c65e21Sny155746 #endif /* lint */ 103*c2c65e21Sny155746 104*c2c65e21Sny155746 #endif /* _ELF_READ_H */ 105