common.h

来自「基于4个mips核的noc设计」· C头文件 代码 · 共 606 行 · 第 1/2 页

H
606
字号
/* ELF support for BFD.   Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,   2001   Free Software Foundation, Inc.   Written by Fred Fish @ Cygnus Support, from information published   in "UNIX System V Release 4, Programmers Guide: ANSI C and   Programming Support Tools".This file is part of BFD, the Binary File Descriptor library.This program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2 of the License, or(at your option) any later version.This program 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 theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  *//* This file is part of ELF support for BFD, and contains the portions   that are common to both the internal and external representations.   For example, ELFMAG0 is the byte 0x7F in both the internal (in-memory)   and external (in-file) representations. */#ifndef _ELF_COMMON_H#define _ELF_COMMON_H/* Fields in e_ident[] */#define EI_MAG0		0	/* File identification byte 0 index */#define ELFMAG0		0x7F	/* Magic number byte 0 */#define EI_MAG1		1	/* File identification byte 1 index */#define ELFMAG1		'E'	/* Magic number byte 1 */#define EI_MAG2		2	/* File identification byte 2 index */#define ELFMAG2		'L'	/* Magic number byte 2 */#define EI_MAG3		3	/* File identification byte 3 index */#define ELFMAG3		'F'	/* Magic number byte 3 */#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_OSABI        7       /* Operating System/ABI indication */#define ELFOSABI_NONE   0       /* UNIX System V ABI */#define ELFOSABI_HPUX   1       /* HP-UX operating system */#define ELFOSABI_NETBSD 2       /* NetBSD */#define ELFOSABI_LINUX  3       /* GNU/Linux */#define ELFOSABI_HURD   4       /* GNU/Hurd */#define ELFOSABI_SOLARIS 6      /* Solaris */#define ELFOSABI_AIX    7       /* AIX */#define ELFOSABI_IRIX   8       /* IRIX */#define ELFOSABI_FREEBSD 9      /* FreeBSD */#define ELFOSABI_TRU64  10      /* TRU64 UNIX */#define ELFOSABI_MODESTO 11     /* Novell Modesto */#define ELFOSABI_OPENBSD 12     /* OpenBSD */#define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */#define ELFOSABI_ARM   97	/* ARM */#define EI_ABIVERSION   8       /* ABI version */#define EI_PAD		9	/* Start of padding bytes *//* Values for e_type, which identifies the object file 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_LOOS         0xFE00	/* Operating system-specific */#define ET_HIOS         0xFEFF  /* Operating system-specific */#define ET_LOPROC	0xFF00	/* Processor-specific */#define ET_HIPROC	0xFFFF	/* Processor-specific *//* Values for e_machine, which identifies the architecture.  These numbers   are officially assigned by registry@sco.com.  See below for a list of   ad-hoc numbers used during initial development.  */#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_486		6	/* Intel 80486 *//* Reserved for future use */#define EM_860		7	/* Intel 80860 */#define EM_MIPS		8	/* MIPS R3000 (officially, big-endian only) */#define EM_S370		9	/* IBM System/370 */#define EM_MIPS_RS3_LE 10	/* MIPS R3000 little-endian (Oct 4 1999 Draft)*/ /* Depreciated */#define EM_PARISC      15	/* HPPA */#define EM_VPP550      17       /* Fujitsu VPP500 */#define EM_SPARC32PLUS 18	/* Sun's "v8plus" */#define EM_960         19       /* Intel 80960 */#define EM_PPC	       20	/* PowerPC */#define EM_PPC64       21	/* 64-bit PowerPC */#define EM_V800        36	/* NEC V800 series */#define EM_FR20	       37	/* Fujitsu FR20 */#define EM_RH32	       38       /* TRW RH32 */#define EM_MCORE       39       /* Motorola M*Core */ /* May also be taken by Fujitsu MMA */#define EM_RCE         39       /* Old name for MCore */#define EM_ARM	       40	/* ARM */#define EM_OLD_ALPHA   41	/* Digital Alpha */#define EM_SH	       42	/* Hitachi SH */#define EM_SPARCV9     43	/* SPARC v9 64-bit */#define EM_TRICORE     44       /* Siemens Tricore embedded processor */#define EM_ARC         45       /* ARC Cores */#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 */#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 Multimedia Accelerator */#define EM_PCP	       55	/* Siemens PCP */#define EM_NCPU	       56	/* Sony nCPU embedded RISC processor */#define EM_NDR1	       57	/* Denso NDR1 microprocesspr */#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 */#define EM_X86_64      62       /* Advanced Micro Devices X86-64 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 cpu */#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 cpu */#define EM_FIREPATH    78	/* Element 14 64-bit DSP processor */#define EM_ZSP         79	/* LSI Logic's 16-bit DSP processor */#define EM_MMIX	       80	/* Donald Knuth's educational 64-bit processor */#define EM_HUANY       81	/* Harvard's machine-independent format */#define EM_PRISM       82	/* SiTera Prism *//* If it is necessary to assign new unofficial EM_* values, please pick large   random numbers (0x8523, 0xa7f2, etc.) to minimize the chances of collision   with official or non-GNU unofficial values.   NOTE: Do not just increment the most recent number by one.   Somebody else somewhere will do exactly the same thing, and you   will have a collision.  Instead, pick a random number.   Normally, each entity or maintainer responsible for a machine with an   unofficial e_machine number should eventually ask registry@sco.com for   an officially blessed number to be added to the list above.  */#define EM_PJ          99       /* picoJava *//* Cygnus PowerPC ELF backend.  Written in the absence of an ABI.  */#define EM_CYGNUS_POWERPC 0x9025/* Old version of Sparc v9, from before the ABI; this should be   removed shortly.  */#define EM_OLD_SPARCV9	11/* Old version of PowerPC, this should be removed shortly. */#define EM_PPC_OLD	17/* Cygnus ARC ELF backend.  Written in the absence of an ABI.  */#define EM_CYGNUS_ARC 0x9040/* Cygnus M32R ELF backend.  Written in the absence of an ABI.  */#define EM_CYGNUS_M32R 0x9041/* Alpha backend magic number.  Written in the absence of an ABI.  */#define EM_ALPHA	0x9026/* D10V backend magic number.  Written in the absence of an ABI.  */#define EM_CYGNUS_D10V	0x7650/* D30V backend magic number.  Written in the absence of an ABI.  */#define EM_CYGNUS_D30V	0x7676/* V850 backend magic number.  Written in the absense of an ABI.  */#define EM_CYGNUS_V850	0x9080/* mn10200 and mn10300 backend magic numbers.   Written in the absense of an ABI.  */#define EM_CYGNUS_MN10200	0xdead#define EM_CYGNUS_MN10300	0xbeef/* FR30 magic number - no EABI available.  */#define EM_CYGNUS_FR30		0x3330/* AVR magic number   Written in the absense of an ABI.  */#define EM_AVR			0x1057/* See the above comment before you add a new EM_* value here.  *//* Values for e_version.  */#define EV_NONE		0		/* Invalid ELF version */#define EV_CURRENT	1		/* Current version *//* Values for program header, p_type field.  */#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_LOOS         0x60000000	/* OS-specific */#define PT_HIOS         0x6fffffff	/* OS-specific */#define PT_LOPROC	0x70000000	/* Processor-specific */#define PT_HIPROC	0x7FFFFFFF	/* Processor-specific *//* Program segment permissions, in program header p_flags field.  */#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_MASKOS	0x0F000000    *//* OS-specific reserved bits */#define PF_MASKOS	0x0FF00000	/* New value, Oct 4, 1999 Draft */#define PF_MASKPROC	0xF0000000	/* Processor-specific reserved bits *//* Values for section header, sh_type field.  */#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_INIT_ARRAY    14		/* Array of ptrs to init functions */#define SHT_FINI_ARRAY    15		/* Array of ptrs to finish functions */#define SHT_PREINIT_ARRAY 16		/* Array of ptrs to pre-init funcs */#define SHT_GROUP         17		/* Section contains a section group */#define SHT_SYMTAB_SHNDX  18		/* Indicies for SHN_XINDEX entries */#define SHT_LOOS        0x60000000      /* First of OS specific semantics */#define SHT_HIOS        0x6fffffff      /* Last of OS specific semantics *//* The next three section types are defined by Solaris, and are named   SHT_SUNW*.  We use them in GNU code, so we also define SHT_GNU*   versions.  */#define SHT_SUNW_verdef	0x6ffffffd	/* Versions defined by file */#define SHT_SUNW_verneed 0x6ffffffe	/* Versions needed by file */#define SHT_SUNW_versym	0x6fffffff	/* Symbol versions */#define SHT_GNU_verdef	SHT_SUNW_verdef#define SHT_GNU_verneed	SHT_SUNW_verneed#define SHT_GNU_versym	SHT_SUNW_versym#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 */#define SHT_HIUSER	0xFFFFFFFF	/* New value, defined in Oct 4, 1999 Draft *//* Values for section header, sh_flags field.  */#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_MERGE	(1 << 4)	/* Data in this section can be merged */#define SHF_STRINGS	(1 << 5)	/* Contains null terminated character strings */#define SHF_INFO_LINK	(1 << 6)	/* sh_info holds section header table index */#define SHF_LINK_ORDER  (1 << 7)	/* Preserve section ordering when linking */#define SHF_OS_NONCONFORMING (1 << 8)	/* OS specific processing required */#define SHF_GROUP	(1 << 9)	/* Member of a section group *//* #define SHF_MASKOS	0x0F000000    *//* OS-specific semantics */#define SHF_MASKOS	0x0FF00000	/* New value, Oct 4, 1999 Draft */

⌨️ 快捷键说明

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