⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elf_repl.h

📁 linux下基于c++的处理器仿真平台。具有处理器流水线
💻 H
📖 第 1 页 / 共 2 页
字号:
/*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 + -