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

📄 elf.h

📁 MIPS处理器的bootloader,龙芯就是用的修改过的PMON2
💻 H
字号:
/* $Id: elf.h,v 1.2 2002/02/13 11:24:00 pefo Exp $ *//* * Copyright (c) 2001-2002 Opsycon AB  (www.opsycon.se / www.opsycon.com) *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by Opsycon AB, Sweden. * 4. The name of the author may not be used to endorse or promote products *    derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * *//* * ELF data structures and values */typedef unsigned short	Elf32_Half;typedef unsigned int	Elf32_Word;typedef signed int	Elf32_Sword;typedef unsigned int	Elf32_Off;typedef unsigned int	Elf32_Addr;typedef unsigned char	Elf_Char;/* * File Header  */#define EI_NIDENT	16typedef struct {    Elf_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;/* e_indent */#define EI_MAG0		0		/* File identification byte 0 index */#define EI_MAG1		1		/* File identification byte 1 index */#define EI_MAG2		2		/* File identification byte 2 index */#define EI_MAG3		3		/* File identification byte 3 index */#define EI_CLASS	4		/* File class */#define  ELFCLASSNONE	 0		 /* Invalid class */#define  ELFCLASS32	 1		 /* 32-bit objects */#define  ELFCLASS64	 2		 /* 64-bit objects */#define EI_DATA		5		/* Data encoding */#define  ELFDATANONE	 0		 /* Invalid data encoding */#define  ELFDATA2LSB	 1		 /* 2's complement, little endian */#define  ELFDATA2MSB	 2		 /* 2's complement, big endian */#define EI_VERSION	6		/* File version */#define EI_PAD		7		/* Start of padding bytes */#define ELFMAG0		0x7F		/* Magic number byte 0 */#define ELFMAG1		'E'		/* Magic number byte 1 */#define ELFMAG2		'L'		/* Magic number byte 2 */#define ELFMAG3		'F'		/* Magic number byte 3 *//* e_type */#define ET_NONE		0		/* No file type */#define ET_REL		1		/* Relocatable file */#define ET_EXEC		2		/* Executable file */#define ET_DYN		3		/* Shared object file */#define ET_CORE		4		/* Core file */#define ET_LOPROC	0xFF00		/* Processor-specific */#define ET_HIPROC	0xFFFF		/* Processor-specific *//* e_machine */#define EM_NONE		0		/* No machine */#define EM_M32		1		/* AT&T WE 32100 */#define EM_SPARC	2		/* SUN SPARC */#define EM_386		3		/* Intel 80386 */#define EM_68K		4		/* Motorola m68k family */#define EM_88K		5		/* Motorola m88k family */#define EM_860		7		/* Intel 80860 */#define EM_MIPS		8		/* MIPS R3000  */#define EM_PPC          20              /* PowerPC *//* e_version */#define EV_NONE		0		/* Invalid ELF version */#define EV_CURRENT	1		/* Current version *//* * Program Header  */typedef struct {  Elf32_Word	p_type;			/* Identifies program segment type */  Elf32_Off	p_offset;		/* Segment file offset */  Elf32_Addr	p_vaddr;		/* Segment virtual address */  Elf32_Addr	p_paddr;		/* Segment physical address */  Elf32_Word	p_filesz;		/* Segment size in file */  Elf32_Word	p_memsz;		/* Segment size in memory */  Elf32_Word	p_flags;		/* Segment flags */  Elf32_Word	p_align;		/* Segment alignment, file & memory */} Elf32_Phdr;/* p_type */#define	PT_NULL		0		/* Program header table entry unused */#define PT_LOAD		1		/* Loadable program segment */#define PT_DYNAMIC	2		/* Dynamic linking information */#define PT_INTERP	3		/* Program interpreter */#define PT_NOTE		4		/* Auxiliary information */#define PT_SHLIB	5		/* Reserved, unspecified semantics */#define PT_PHDR		6		/* Entry for header table itself */#define PT_LOPROC	0x70000000	/* Processor-specific */#define PT_HIPROC	0x7FFFFFFF	/* Processor-specific *//* p_flags */#define PF_X		(1 << 0)	/* Segment is executable */#define PF_W		(1 << 1)	/* Segment is writable */#define PF_R		(1 << 2)	/* Segment is readable */#define PF_MASKPROC	0xF0000000	/* Processor-specific reserved bits *//* * 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;/* sh_type */#define SHT_NULL	0		/* Section header table entry unused */#define SHT_PROGBITS	1		/* Program specific (private) data */#define SHT_SYMTAB	2		/* Link editing symbol table */#define SHT_STRTAB	3		/* A string table */#define SHT_RELA	4		/* Relocation entries with addends */#define SHT_HASH	5		/* A symbol hash table */#define SHT_DYNAMIC	6		/* Information for dynamic linking */#define SHT_NOTE	7		/* Information that marks file */#define SHT_NOBITS	8		/* Section occupies no space in file */#define SHT_REL		9		/* Relocation entries, no addends */#define SHT_SHLIB	10		/* Reserved, unspecified semantics */#define SHT_DYNSYM	11		/* Dynamic linking symbol table */#define SHT_LOPROC	0x70000000	/* Processor-specific semantics, lo */#define SHT_HIPROC	0x7FFFFFFF	/* Processor-specific semantics, hi */#define SHT_LOUSER	0x80000000	/* Application-specific semantics */#define SHT_HIUSER	0x8FFFFFFF	/* Application-specific semantics *//* sh_flags */#define SHF_WRITE	(1 << 0)	/* Writable data during execution */#define SHF_ALLOC	(1 << 1)	/* Occupies memory during execution */#define SHF_EXECINSTR	(1 << 2)	/* Executable machine instructions */#define SHF_MASKPROC	0xF0000000	/* Processor-specific semantics *//* * Symbol Table */typedef struct {    Elf32_Word	st_name;    Elf32_Addr	st_value;    Elf32_Word	st_size;    Elf_Char	st_info;    Elf_Char	st_other;    Elf32_Half	st_shndx;} Elf32_Sym;#define ELF_ST_BIND(val)		(((unsigned int)(val)) >> 4)#define ELF_ST_TYPE(val)		((val) & 0xF)#define ELF_ST_INFO(bind,type)		(((bind) << 4) | ((type) & 0xF))/* symbol binding */#define STB_LOCAL	0		/* Symbol not visible outside obj */#define STB_GLOBAL	1		/* Symbol visible outside obj */#define STB_WEAK	2		/* Like globals, lower precedence */#define STB_LOPROC	13		/* Application-specific semantics */#define STB_HIPROC	15		/* Application-specific semantics *//* symbol type */#define STT_NOTYPE	0		/* Symbol type is unspecified */#define STT_OBJECT	1		/* Symbol is a data object */#define STT_FUNC	2		/* Symbol is a code object */#define STT_SECTION	3		/* Symbol associated with a section */#define STT_FILE	4		/* Symbol gives a file name */#define STT_LOPROC	13		/* Application-specific semantics */#define STT_HIPROC	15		/* Application-specific semantics *//* special values st_shndx */#define SHN_UNDEF	0		/* Undefined section reference */#define SHN_LORESERV	0xFF00		/* Begin range of reserved indices */#define SHN_LOPROC	0xFF00		/* Begin range of appl-specific */#define SHN_HIPROC	0xFF1F		/* End range of appl-specific */#define SHN_ABS		0xFFF1		/* Associated symbol is absolute */#define SHN_COMMON	0xFFF2		/* Associated symbol is in common */#define SHN_HIRESERVE	0xFFFF		/* End range of reserved indices */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -