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

📄 internal.h

📁 早期freebsd实现
💻 H
📖 第 1 页 / 共 2 页
字号:
/* Internal format of COFF object file data structures, for GNU BFD.   This file is part of BFD, the Binary File Descriptor library.  *//* First, make "signed char" work, even on old compilers. */#ifndef signed#ifndef __STDC__#define	signed	/**/#endif#endif/********************** FILE HEADER **********************/struct internal_filehdr {  unsigned short	f_magic; /* magic number			*/  unsigned short	f_nscns; /* number of sections		*/  long		f_timdat;	/* time & date stamp		*/  long		f_symptr;	/* file pointer to symtab	*/  long		f_nsyms;	/* number of symtab entries	*/  unsigned short	f_opthdr; /* sizeof(optional hdr)		*/  unsigned short	f_flags; /* flags			*/};/* Bits for f_flags: *	F_RELFLG	relocation info stripped from file *	F_EXEC		file is executable (no unresolved external references) *	F_LNNO		line numbers stripped from file *	F_LSYMS		local symbols stripped from file *	F_AR16WR	file is 16-bit little-endian *	F_AR32WR	file is 32-bit little-endian *	F_AR32W		file is 32-bit big-endian *	F_DYNLOAD	rs/6000 aix: dynamically loadable w/imports & exports *	F_SHROBJ	rs/6000 aix: file is a shared object */#define	F_RELFLG	(0x0001)#define	F_EXEC		(0x0002)#define	F_LNNO		(0x0004)#define	F_LSYMS		(0x0008)#define	F_AR16WR	(0x0080)#define	F_AR32WR	(0x0100)#define	F_AR32W     	(0x0200)#define	F_DYNLOAD	(0x1000)#define	F_SHROBJ	(0x2000)/********************** AOUT "OPTIONAL HEADER" **********************/struct internal_aouthdr {	short		magic;	/* type of file				*/	short		vstamp;	/* version stamp			*/	unsigned long	tsize;	/* text size in bytes, padded to FW bdry*/	unsigned long	dsize;	/* initialized data "  "		*/	unsigned long	bsize;	/* uninitialized data "   "		*/	unsigned long	entry;	/* entry pt.				*/	unsigned long	text_start;	/* base of text used for this file */	unsigned long	data_start;	/* base of data used for this file */	/* i960 stuff */	unsigned long	tagentries;	/* number of tag entries to follow */	/* RS/6000 stuff */        unsigned long   o_toc;	/* address of TOC			*/        short		o_snentry;	/* section number for entry point */        short		o_sntext;	/* section number for text	*/        short		o_sndata;	/* section number for data	*/        short		o_sntoc;	/* section number for toc	*/        short		o_snloader;	/* section number for loader section */        short		o_snbss;	/* section number for bss	*/        short		o_algntext;	/* max alignment for text	*/        short		o_algndata;	/* max alignment for data	*/        short		o_modtype;	/* Module type field, 1R,RE,RO	*/        unsigned long   o_maxstack;     /* max stack size allowed.	*/};/********************** STORAGE CLASSES **********************/#define C_EFCN		-1	/* physical end of function	*/#define C_NULL		0#define C_AUTO		1	/* automatic variable		*/#define C_EXT		2	/* external symbol		*/#define C_STAT		3	/* static			*/#define C_REG		4	/* register variable		*/#define C_EXTDEF	5	/* external definition		*/#define C_LABEL		6	/* label			*/#define C_ULABEL	7	/* undefined label		*/#define C_MOS		8	/* member of structure		*/#define C_ARG		9	/* function argument		*/#define C_STRTAG	10	/* structure tag		*/#define C_MOU		11	/* member of union		*/#define C_UNTAG		12	/* union tag			*/#define C_TPDEF		13	/* type definition		*/#define C_USTATIC	14	/* undefined static		*/#define C_ENTAG		15	/* enumeration tag		*/#define C_MOE		16	/* member of enumeration	*/#define C_REGPARM	17	/* register parameter		*/#define C_FIELD		18	/* bit field			*/#define C_AUTOARG	19	/* auto argument		*/#define C_LASTENT	20	/* dummy entry (end of block)	*/#define C_BLOCK		100	/* ".bb" or ".eb"		*/#define C_FCN		101	/* ".bf" or ".ef"		*/#define C_EOS		102	/* end of structure		*/#define C_FILE		103	/* file name			*/#define C_LINE		104	/* line # reformatted as symbol table entry */#define C_ALIAS	 	105	/* duplicate tag		*/#define C_HIDDEN	106	/* ext symbol in dmert public lib */	/* New storage classes for 80960 */ /* C_LEAFPROC is obsolete.  Use C_LEAFEXT or C_LEAFSTAT */#define C_LEAFPROC	108	/* Leaf procedure, "call" via BAL */#define C_SCALL		107	/* Procedure reachable via system call */#define C_LEAFEXT       108	/* External leaf */#define C_LEAFSTAT      113     /* Static leaf */#define C_OPTVAR	109	/* Optimized variable		*/#define C_DEFINE	110	/* Preprocessor #define		*/#define C_PRAGMA	111	/* Advice to compiler or linker	*/#define C_SEGMENT	112	/* 80960 segment name		*/	/* New storage classes for RS/6000 */#define C_HIDEXT        107     /* Un-named external symbol */#define C_BINCL         108     /* Marks beginning of include file */#define C_EINCL         109     /* Marks ending of include file */	/* storage classes for stab symbols for RS/6000 */#define C_GSYM          ((signed char)0x80)#define C_LSYM          ((signed char)0x81)#define C_PSYM          ((signed char)0x82)#define C_RSYM          ((signed char)0x83)#define C_RPSYM         ((signed char)0x84)#define C_STSYM         ((signed char)0x85)#define C_TCSYM         ((signed char)0x86)#define C_BCOMM         ((signed char)0x87)#define C_ECOML         ((signed char)0x88)#define C_ECOMM         ((signed char)0x89)#define C_DECL          ((signed char)0x8c)#define C_ENTRY         ((signed char)0x8d)#define C_FUN           ((signed char)0x8e)#define C_BSTAT         ((signed char)0x8f)#define C_ESTAT         ((signed char)0x90)/********************** SECTION HEADER **********************/struct internal_scnhdr {	char		s_name[8];	/* section name			*/	long		s_paddr;	/* physical address, aliased s_nlib */	long		s_vaddr;	/* virtual address		*/	long		s_size;		/* section size			*/	long		s_scnptr;	/* file ptr to raw data for section */	long		s_relptr;	/* file ptr to relocation	*/	long		s_lnnoptr;	/* file ptr to line numbers	*/	unsigned long 	s_nreloc;	/* number of relocation entries	*/	unsigned long   s_nlnno;	/* number of line number entries*/	long		s_flags;	/* flags			*/#ifdef I960	long		s_align;	#endif};/* * s_flags "type" */#define STYP_REG	 (0x0000) /* "regular": allocated, relocated, loaded */#define STYP_DSECT	 (0x0001) /* "dummy":  relocated only*/#define STYP_NOLOAD	 (0x0002) /* "noload": allocated, relocated, not loaded */#define STYP_GROUP	 (0x0004) /* "grouped": formed of input sections */#define STYP_PAD	 (0x0008) /* "padding": not allocated, not relocated, loaded */#define STYP_COPY	 (0x0010) /* "copy": for decision function used by field update;  not allocated, not relocated,				     loaded; reloc & lineno entries processed normally */#define STYP_TEXT	 (0x0020) /* section contains text only */#define S_SHRSEG	 (0x0020) /* In 3b Update files (output of ogen), sections which appear in SHARED segments of the Pfile				     will have the S_SHRSEG flag set by ogen, to inform dufr that updating 1 copy of the proc. will				     update all process invocations. */#define STYP_DATA	 (0x0040) /* section contains data only */#define STYP_BSS	 (0x0080) /* section contains bss only */#define S_NEWFCN	 (0x0100) /* In a minimal file or an update file, a new function (as compared with a replaced function) */#define STYP_INFO	 (0x0200) /* comment: not allocated not relocated, not loaded */#define STYP_OVER	 (0x0400) /* overlay: relocated not allocated or loaded */#define STYP_LIB	 (0x0800) /* for .lib: same as INFO */#define STYP_MERGE	 (0x2000) /* merge section -- combines with text, data or bss sections only */#define STYP_REVERSE_PAD (0x4000) /* section will be padded with no-op instructions wherever padding is necessary and there is a				     word of contiguous bytes				     beginning on a word boundary. */#define STYP_LIT	0x8020	/* Literal data (like STYP_TEXT) *//********************** LINE NUMBERS **********************//* 1 line number entry for every "breakpointable" source line in a section. * Line numbers are grouped on a per function basis; first entry in a function * grouping will have l_lnno = 0 and in place of physical address will be the * symbol table index of the function name. */struct internal_lineno {	union {		long l_symndx;	/* function name symbol index, iff l_lnno == 0*/		long l_paddr;	/* (physical) address of line number	*/	} l_addr;	unsigned long	l_lnno;	/* line number		*/};/********************** SYMBOLS **********************/#define SYMNMLEN	8	/* # characters in a symbol name	*/#define FILNMLEN	14	/* # characters in a file name		*/#define DIMNUM		4	/* # array dimensions in auxiliary entry */struct internal_syment {	union {		char	_n_name[SYMNMLEN];	/* old COFF version	*/		struct {			long	_n_zeroes;	/* new == 0		*/			long	_n_offset;	/* offset into string table */		} _n_n;		char	*_n_nptr[2];	/* allows for overlaying	*/	} _n;	long		n_value;	/* value of symbol		*/	short		n_scnum;	/* section number		*/	unsigned short	n_flags;	/* copy of flags from filhdr	*/	unsigned short	n_type;		/* type and derived type	*/	signed char	n_sclass;	/* storage class		*/	char		n_numaux;	/* number of aux. entries	*/};#define n_name		_n._n_name#define n_zeroes	_n._n_n._n_zeroes#define n_offset	_n._n_n._n_offset/* Relocatable symbols have number of the section in which they are defined,   or one of the following: */#define N_UNDEF	((short)0)  /* undefined symbol */#define N_ABS	((short)-1) /* value of symbol is absolute */#define N_DEBUG	((short)-2) /* debugging symbol -- value is meaningless */#define N_TV	((short)-3) /* indicates symbol needs preload transfer vector */#define P_TV	((short)-4) /* indicates symbol needs postload transfer vector*/

⌨️ 快捷键说明

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