📄 elf_repl.h
字号:
/*elf_repl.h - public header file for systems that lack it.Copyright (C) 1995 - 2002 Michael Riepe <michael@stud.uni-hannover.de>This library is free software; you can redistribute it and/ormodify it under the terms of the GNU Library General PublicLicense as published by the Free Software Foundation; eitherversion 2 of the License, or (at your option) any later version.This library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNULibrary General Public License for more details.You should have received a copy of the GNU Library General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.*//* @(#) $Id: elf_repl.h,v 1.13 2003/10/25 15:22:59 michael Exp $ *//* * NEVER INCLUDE THIS FILE DIRECTLY - USE <libelf.h> INSTEAD! */#ifndef _ELF_REPL_H#define _ELF_REPL_H#ifdef __cplusplusextern "C" {#endif /* __cplusplus *//* * Scalar data types */typedef __libelf_u32_t Elf32_Addr;typedef __libelf_u16_t Elf32_Half;typedef __libelf_u32_t Elf32_Off;typedef __libelf_i32_t Elf32_Sword;typedef __libelf_u32_t Elf32_Word;#define ELF32_FSZ_ADDR 4#define ELF32_FSZ_HALF 2#define ELF32_FSZ_OFF 4#define ELF32_FSZ_SWORD 4#define ELF32_FSZ_WORD 4#if __LIBELF64typedef __libelf_u64_t Elf64_Addr;typedef __libelf_u16_t Elf64_Half;typedef __libelf_u64_t Elf64_Off;typedef __libelf_i32_t Elf64_Sword;typedef __libelf_u32_t Elf64_Word;typedef __libelf_i64_t Elf64_Sxword;typedef __libelf_u64_t Elf64_Xword;#define ELF64_FSZ_ADDR 8#define ELF64_FSZ_HALF 2#define ELF64_FSZ_OFF 8#define ELF64_FSZ_SWORD 4#define ELF64_FSZ_WORD 4#define ELF64_FSZ_SXWORD 8#define ELF64_FSZ_XWORD 8/* * Blame Sun for this... */typedef __libelf_u64_t Elf64_Lword;typedef __libelf_u64_t Elf32_Lword;#endif /* __LIBELF64 *//* * ELF header */#define EI_NIDENT 16typedef struct { unsigned char e_ident[EI_NIDENT]; Elf32_Half e_type; Elf32_Half e_machine; Elf32_Word e_version; Elf32_Addr e_entry; Elf32_Off e_phoff; Elf32_Off e_shoff; Elf32_Word e_flags; Elf32_Half e_ehsize; Elf32_Half e_phentsize; Elf32_Half e_phnum; Elf32_Half e_shentsize; Elf32_Half e_shnum; Elf32_Half e_shstrndx;} Elf32_Ehdr;#if __LIBELF64typedef struct { unsigned char e_ident[EI_NIDENT]; Elf64_Half e_type; Elf64_Half e_machine; Elf64_Word e_version; Elf64_Addr e_entry; Elf64_Off e_phoff; Elf64_Off e_shoff; Elf64_Word e_flags; Elf64_Half e_ehsize; Elf64_Half e_phentsize; Elf64_Half e_phnum; Elf64_Half e_shentsize; Elf64_Half e_shnum; Elf64_Half e_shstrndx;} Elf64_Ehdr;#endif /* __LIBELF64 *//* * e_ident */#define EI_MAG0 0#define EI_MAG1 1#define EI_MAG2 2#define EI_MAG3 3#define EI_CLASS 4#define EI_DATA 5#define EI_VERSION 6#define EI_OSABI 7#define EI_ABIVERSION 8#define EI_PAD 9#define ELFMAG0 0x7f#define ELFMAG1 'E'#define ELFMAG2 'L'#define ELFMAG3 'F'#define ELFMAG "\177ELF"#define SELFMAG 4/* * e_ident[EI_CLASS] */#define ELFCLASSNONE 0#define ELFCLASS32 1#define ELFCLASS64 2#define ELFCLASSNUM 3/* * e_ident[EI_DATA] */#define ELFDATANONE 0#define ELFDATA2LSB 1#define ELFDATA2MSB 2#define ELFDATANUM 3/* * e_ident[EI_OSABI] */#define ELFOSABI_NONE 0 /* No extensions or unspecified */#define ELFOSABI_SYSV ELFOSABI_NONE#define ELFOSABI_HPUX 1 /* Hewlett-Packard HP-UX */#define ELFOSABI_NETBSD 2 /* NetBSD */#define ELFOSABI_LINUX 3 /* Linux */#define ELFOSABI_SOLARIS 6 /* Sun Solaris */#define ELFOSABI_AIX 7 /* AIX */#define ELFOSABI_IRIX 8 /* IRIX */#define ELFOSABI_FREEBSD 9 /* FreeBSD */#define ELFOSABI_TRU64 10 /* Compaq TRU64 UNIX */#define ELFOSABI_MODESTO 11 /* Novell Modesto */#define ELFOSABI_OPENBSD 12 /* Open BSD */#define ELFOSABI_OPENVMS 13 /* Open VMS */#define ELFOSABI_NSK 14 /* Hewlett-Packard Non-Stop Kernel *//* these are probably obsolete: */#define ELFOSABI_ARM 97 /* ARM */#define ELFOSABI_STANDALONE 255 /* standalone (embedded) application *//* * e_type */#define ET_NONE 0#define ET_REL 1#define ET_EXEC 2#define ET_DYN 3#define ET_CORE 4#define ET_NUM 5#define ET_LOOS 0xfe00#define ET_HIOS 0xfeff#define ET_LOPROC 0xff00#define ET_HIPROC 0xffff/* * e_machine */#define EM_NONE 0 /* No machine */#define EM_M32 1 /* AT&T WE 32100 */#define EM_SPARC 2 /* SPARC */#define EM_386 3 /* Intel 80386 */#define EM_68K 4 /* Motorola 68000 */#define EM_88K 5 /* Motorola 88000 */#define EM_486 6 /* Intel i486 (DO NOT USE THIS ONE) */#define EM_860 7 /* Intel 80860 */#define EM_MIPS 8 /* MIPS I Architecture */#define EM_S370 9 /* IBM System/370 Processor */#define EM_MIPS_RS3_LE 10 /* MIPS RS3000 Little-endian */#define EM_SPARC64 11 /* SPARC 64-bit */#define EM_PARISC 15 /* Hewlett-Packard PA-RISC */#define EM_VPP500 17 /* Fujitsu VPP500 */#define EM_SPARC32PLUS 18 /* Enhanced instruction set SPARC */#define EM_960 19 /* Intel 80960 */#define EM_PPC 20 /* PowerPC */#define EM_PPC64 21 /* 64-bit PowerPC */#define EM_S390 22 /* IBM System/390 Processor */#define EM_V800 36 /* NEC V800 */#define EM_FR20 37 /* Fujitsu FR20 */#define EM_RH32 38 /* TRW RH-32 */#define EM_RCE 39 /* Motorola RCE */#define EM_ARM 40 /* Advanced RISC Machines ARM */#define EM_ALPHA 41 /* Digital Alpha */#define EM_SH 42 /* Hitachi SH */#define EM_SPARCV9 43 /* SPARC Version 9 */#define EM_TRICORE 44 /* Siemens TriCore embedded processor */#define EM_ARC 45 /* Argonaut RISC Core, Argonaut Technologies Inc. */#define EM_H8_300 46 /* Hitachi H8/300 */#define EM_H8_300H 47 /* Hitachi H8/300H */#define EM_H8S 48 /* Hitachi H8S */#define EM_H8_500 49 /* Hitachi H8/500 */#define EM_IA_64 50 /* Intel IA-64 processor architecture */#define EM_MIPS_X 51 /* Stanford MIPS-X */#define EM_COLDFIRE 52 /* Motorola ColdFire */#define EM_68HC12 53 /* Motorola M68HC12 */#define EM_MMA 54 /* Fujitsu MMA Multimedia Accelerator */#define EM_PCP 55 /* Siemens PCP */#define EM_NCPU 56 /* Sony nCPU embedded RISC processor */#define EM_NDR1 57 /* Denso NDR1 microprocessor */#define EM_STARCORE 58 /* Motorola Star*Core processor */#define EM_ME16 59 /* Toyota ME16 processor */#define EM_ST100 60 /* STMicroelectronics ST100 processor */#define EM_TINYJ 61 /* Advanced Logic Corp. TinyJ embedded processor family */#define EM_X86_64 62 /* AMD x86-64 architecture */#define EM_PDSP 63 /* Sony DSP Processor */#define EM_FX66 66 /* Siemens FX66 microcontroller */#define EM_ST9PLUS 67 /* STMicroelectronics ST9+ 8/16 bit microcontroller */#define EM_ST7 68 /* STMicroelectronics ST7 8-bit microcontroller */#define EM_68HC16 69 /* Motorola MC68HC16 Microcontroller */#define EM_68HC11 70 /* Motorola MC68HC11 Microcontroller */#define EM_68HC08 71 /* Motorola MC68HC08 Microcontroller */#define EM_68HC05 72 /* Motorola MC68HC05 Microcontroller */#define EM_SVX 73 /* Silicon Graphics SVx */#define EM_ST19 74 /* STMicroelectronics ST19 8-bit microcontroller */#define EM_VAX 75 /* Digital VAX */#define EM_CRIS 76 /* Axis Communications 32-bit embedded processor */#define EM_JAVELIN 77 /* Infineon Technologies 32-bit embedded processor */#define EM_FIREPATH 78 /* Element 14 64-bit DSP Processor */#define EM_ZSP 79 /* LSI Logic 16-bit DSP Processor */#define EM_MMIX 80 /* Donald Knuth's educational 64-bit processor */#define EM_HUANY 81 /* Harvard University machine-independent object files */#define EM_PRISM 82 /* SiTera Prism */#define EM_AVR 83 /* Atmel AVR 8-bit microcontroller */#define EM_FR30 84 /* Fujitsu FR30 */#define EM_D10V 85 /* Mitsubishi D10V */#define EM_D30V 86 /* Mitsubishi D30V */#define EM_V850 87 /* NEC v850 */#define EM_M32R 88 /* Mitsubishi M32R */#define EM_MN10300 89 /* Matsushita MN10300 */#define EM_MN10200 90 /* Matsushita MN10200 */#define EM_PJ 91 /* picoJava */#define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor */#define EM_ARC_A5 93 /* ARC Cores Tangent-A5 */#define EM_XTENSA 94 /* Tensilica Xtensa Architecture */#define EM_VIDEOCORE 95 /* Alphamosaic VideoCore processor */#define EM_TMM_GPP 96 /* Thompson Multimedia General Purpose Processor */#define EM_NS32K 97 /* National Semiconductor 32000 series */#define EM_TPC 98 /* Tenor Network TPC processor */#define EM_SNP1K 99 /* Trebia SNP 1000 processor */#define EM_ST200 100 /* STMicroelectronics (www.st.com) ST200 microcontroller */#define EM_NUM 101/* * e_ident[EI_VERSION], e_version */#define EV_NONE 0#define EV_CURRENT 1#define EV_NUM 2/* * Section header */typedef struct { Elf32_Word sh_name; Elf32_Word sh_type; Elf32_Word sh_flags; Elf32_Addr sh_addr; Elf32_Off sh_offset; Elf32_Word sh_size; Elf32_Word sh_link; Elf32_Word sh_info; Elf32_Word sh_addralign; Elf32_Word sh_entsize;} Elf32_Shdr;#if __LIBELF64typedef struct { Elf64_Word sh_name; Elf64_Word sh_type; Elf64_Xword sh_flags; Elf64_Addr sh_addr; Elf64_Off sh_offset; Elf64_Xword sh_size; Elf64_Word sh_link; Elf64_Word sh_info; Elf64_Xword sh_addralign; Elf64_Xword sh_entsize;} Elf64_Shdr;#endif /* __LIBELF64 *//* * Special section indices */#define SHN_UNDEF 0#define SHN_LORESERVE 0xff00#define SHN_LOPROC 0xff00#define SHN_HIPROC 0xff1f#define SHN_LOOS 0xff20#define SHN_HIOS 0xff3f#define SHN_ABS 0xfff1#define SHN_COMMON 0xfff2#define SHN_XINDEX 0xffff#define SHN_HIRESERVE 0xffff/* * sh_type */#define SHT_NULL 0#define SHT_PROGBITS 1#define SHT_SYMTAB 2#define SHT_STRTAB 3#define SHT_RELA 4#define SHT_HASH 5#define SHT_DYNAMIC 6#define SHT_NOTE 7#define SHT_NOBITS 8#define SHT_REL 9#define SHT_SHLIB 10#define SHT_DYNSYM 11#define SHT_INIT_ARRAY 14#define SHT_FINI_ARRAY 15#define SHT_PREINIT_ARRAY 16#define SHT_GROUP 17#define SHT_SYMTAB_SHNDX 18#define SHT_NUM 19#define SHT_LOOS 0x60000000#define SHT_HIOS 0x6fffffff#define SHT_LOPROC 0x70000000#define SHT_HIPROC 0x7fffffff#define SHT_LOUSER 0x80000000#define SHT_HIUSER 0xffffffff/* * Solaris extensions */#define SHT_SUNW_move 0x6ffffffa#define SHT_SUNW_COMDAT 0x6ffffffb#define SHT_SUNW_syminfo 0x6ffffffc#define SHT_SUNW_verdef 0x6ffffffd#define SHT_SUNW_verneed 0x6ffffffe#define SHT_SUNW_versym 0x6fffffff/* * GNU extensions */#define SHT_GNU_verdef 0x6ffffffd#define SHT_GNU_verneed 0x6ffffffe#define SHT_GNU_versym 0x6fffffff/* * sh_flags */#define SHF_WRITE 0x1#define SHF_ALLOC 0x2#define SHF_EXECINSTR 0x4#define SHF_MERGE 0x10#define SHF_STRINGS 0x20#define SHF_INFO_LINK 0x40#define SHF_LINK_ORDER 0x80#define SHF_OS_NONCONFORMING 0x100#define SHF_GROUP 0x200#define SHF_TLS 0x400#define SHF_MASKOS 0x0ff00000#define SHF_MASKPROC 0xf0000000/* * Section group flags */#define GRP_COMDAT 0x1#define GRP_MASKOS 0x0ff00000#define GRP_MASKPROC 0xf0000000/* * Symbol table */typedef struct { Elf32_Word st_name; Elf32_Addr st_value; Elf32_Word st_size; unsigned char st_info; unsigned char st_other; Elf32_Half st_shndx;} Elf32_Sym;#if __LIBELF64typedef struct { Elf64_Word st_name; unsigned char st_info; unsigned char st_other; Elf64_Half st_shndx; Elf64_Addr st_value; Elf64_Xword st_size;} Elf64_Sym;#endif /* __LIBELF64 *//* * Special symbol indices */#define STN_UNDEF 0/* * Macros for manipulating st_info */#define ELF32_ST_BIND(i) ((i)>>4)#define ELF32_ST_TYPE(i) ((i)&0xf)#define ELF32_ST_INFO(b,t) (((b)<<4)+((t)&0xf))#if __LIBELF64#define ELF64_ST_BIND(i) ((i)>>4)#define ELF64_ST_TYPE(i) ((i)&0xf)#define ELF64_ST_INFO(b,t) (((b)<<4)+((t)&0xf))#endif /* __LIBELF64 *//* * Symbol binding */#define STB_LOCAL 0#define STB_GLOBAL 1#define STB_WEAK 2#define STB_NUM 3#define STB_LOOS 10#define STB_HIOS 12#define STB_LOPROC 13#define STB_HIPROC 15/* * Symbol types */#define STT_NOTYPE 0#define STT_OBJECT 1#define STT_FUNC 2#define STT_SECTION 3#define STT_FILE 4#define STT_COMMON 5#define STT_TLS 6#define STT_NUM 7#define STT_LOOS 10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -