_elfdump.h revision 3492:cd4326c9ab0e
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 (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 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. 12 * 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] 18 * 19 * CDDL HEADER END 20 */ 21 22/* 23 * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27#ifndef __ELFDUMP_H 28#define __ELFDUMP_H 29 30#pragma ident "%Z%%M% %I% %E% SMI" 31 32#include <machelf.h> 33#include <debug.h> 34 35/* 36 * Local include file for elfdump. 37 */ 38#ifdef __cplusplus 39extern "C" { 40#endif 41 42#define FLG_DYNAMIC 0x00000001 43#define FLG_EHDR 0x00000002 44#define FLG_INTERP 0x00000004 45#define FLG_SHDR 0x00000008 46#define FLG_NOTE 0x00000010 47#define FLG_PHDR 0x00000020 48#define FLG_RELOC 0x00000040 49#define FLG_SYMBOLS 0x00000080 50#define FLG_VERSIONS 0x00000100 51#define FLG_HASH 0x00000200 52#define FLG_GOT 0x00000400 53#define FLG_SYMINFO 0x00000800 54#define FLG_MOVE 0x00001000 55#define FLG_GROUP 0x00002000 56#define FLG_CAP 0x00004000 57#define FLG_UNWIND 0x00008000 58#define FLG_SORT 0x00010000 59#define FLG_LONGNAME 0x00100000 /* not done by default */ 60#define FLG_CHECKSUM 0x00200000 /* not done by default */ 61#define FLG_DEMANGLE 0x00400000 /* not done by default */ 62#define FLG_EVERYTHING 0x000fffff 63 64#define MAXNDXSIZE 10 65 66typedef struct cache { 67 Shdr *c_shdr; 68 Elf_Data *c_data; 69 char *c_name; 70} Cache; 71 72typedef struct got_info { 73 Word g_reltype; /* it will never happen, but */ 74 /* support mixed relocations */ 75 void *g_rel; 76 const char *g_symname; 77} Got_info; 78 79extern const Cache cache_init; 80 81extern void failure(const char *, const char *); 82extern const char *demangle(const char *, uint_t); 83 84/* 85 * Define various elfdump() functions into their 32-bit and 64-bit variants. 86 */ 87#if defined(_ELF64) 88#define cap cap64 89#define checksum checksum64 90#define dynamic dynamic64 91#define got got64 92#define group group64 93#define hash hash64 94#define interp interp64 95#define move move64 96#define note note64 97#define note_entry note_entry64 98#define regular regular64 99#define reloc reloc64 100#define sections sections64 101#define string string64 102#define symbols symbols64 103#define syminfo syminfo64 104#define symlookup symlookup64 105#define unwind unwind64 106#define versions versions64 107#define version_def version_def64 108#define version_need version_need64 109#else 110#define cap cap32 111#define checksum checksum32 112#define dynamic dynamic32 113#define got got32 114#define group group32 115#define hash hash32 116#define interp interp32 117#define move move32 118#define note note32 119#define note_entry note_entry32 120#define regular regular32 121#define reloc reloc32 122#define sections sections32 123#define string string32 124#define symbols symbols32 125#define syminfo syminfo32 126#define symlookup symlookup32 127#define unwind unwind32 128#define versions versions32 129#define version_def version_def32 130#define version_need version_need32 131#endif 132 133extern void regular32(const char *, Elf *, uint_t, char *, int); 134extern void regular64(const char *, Elf *, uint_t, char *, int); 135 136#ifdef __cplusplus 137} 138#endif 139 140#endif /* __ELFDUMP_H */ 141