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

📄 elf_repl.h

📁 linux下基于c++的处理器仿真平台。具有处理器流水线
💻 H
📖 第 1 页 / 共 2 页
字号:
#define STT_HIOS	12#define STT_LOPROC	13#define STT_HIPROC	15/* * Macros for manipulating st_other */#define ELF32_ST_VISIBILITY(o)	((o)&0x3)#if __LIBELF64#define ELF64_ST_VISIBILITY(o)	((o)&0x3)#endif /* __LIBELF64 *//* * Symbol visibility */#define STV_DEFAULT	0#define STV_INTERNAL	1#define STV_HIDDEN	2#define STV_PROTECTED	3/* * Relocation */typedef struct {    Elf32_Addr		r_offset;    Elf32_Word		r_info;} Elf32_Rel;typedef struct {    Elf32_Addr		r_offset;    Elf32_Word		r_info;    Elf32_Sword		r_addend;} Elf32_Rela;#if __LIBELF64typedef struct {    Elf64_Addr		r_offset;    Elf64_Xword		r_info;} Elf64_Rel;typedef struct {    Elf64_Addr		r_offset;    Elf64_Xword		r_info;    Elf64_Sxword	r_addend;} Elf64_Rela;#endif /* __LIBELF64 *//* * Macros for manipulating r_info */#define ELF32_R_SYM(i)		((i)>>8)#define ELF32_R_TYPE(i)		((unsigned char)(i))#define ELF32_R_INFO(s,t)	(((s)<<8)+(unsigned char)(t))#if __LIBELF64#define ELF64_R_SYM(i)		((Elf64_Xword)(i)>>32)#define ELF64_R_TYPE(i)		((i)&0xffffffffL)#define ELF64_R_INFO(s,t)	(((Elf64_Xword)(s)<<32)+((t)&0xffffffffL))#endif /* __LIBELF64 *//* * Note entry header */typedef struct {    Elf32_Word		n_namesz;	/* name size */    Elf32_Word		n_descsz;	/* descriptor size */    Elf32_Word		n_type;		/* descriptor type */} Elf32_Nhdr;#if __LIBELF64/* Solaris and GNU use this layout.  Be compatible. *//* XXX: Latest ELF specs say it's 64-bit?! */typedef struct {    Elf64_Word		n_namesz;	/* name size */    Elf64_Word		n_descsz;	/* descriptor size */    Elf64_Word		n_type;		/* descriptor type */} Elf64_Nhdr;#endif /* __LIBELF64 *//* * Well-known descriptor types for ET_CORE files */#define NT_PRSTATUS	1#define NT_PRFPREG	2#define NT_PRPSINFO	3/* * Program header */typedef struct {    Elf32_Word		p_type;    Elf32_Off		p_offset;    Elf32_Addr		p_vaddr;    Elf32_Addr		p_paddr;    Elf32_Word		p_filesz;    Elf32_Word		p_memsz;    Elf32_Word		p_flags;    Elf32_Word		p_align;} Elf32_Phdr;#if __LIBELF64typedef struct {    Elf64_Word		p_type;    Elf64_Word		p_flags;    Elf64_Off		p_offset;    Elf64_Addr		p_vaddr;    Elf64_Addr		p_paddr;    Elf64_Xword		p_filesz;    Elf64_Xword		p_memsz;    Elf64_Xword		p_align;} Elf64_Phdr;#endif /* __LIBELF64 *//* * p_type */#define PT_NULL		0#define PT_LOAD		1#define PT_DYNAMIC	2#define PT_INTERP	3#define PT_NOTE		4#define PT_SHLIB	5#define PT_PHDR		6#define PT_TLS		7#define PT_NUM		8#define PT_LOOS		0x60000000#define PT_HIOS		0x6fffffff#define PT_LOPROC	0x70000000#define PT_HIPROC	0x7fffffff/* * p_flags */#define PF_X		0x1#define PF_W		0x2#define PF_R		0x4#define PF_MASKOS	0x0ff00000#define PF_MASKPROC	0xf0000000/* * Dynamic structure */typedef struct {    Elf32_Sword		d_tag;    union {	Elf32_Word	d_val;	Elf32_Addr	d_ptr;    } d_un;} Elf32_Dyn;#if __LIBELF64typedef struct {    Elf64_Sxword	d_tag;    union {	Elf64_Xword	d_val;	Elf64_Addr	d_ptr;    } d_un;} Elf64_Dyn;#endif /* __LIBELF64 *//* * Dynamic array tags */					/* d_un   exec	 shared */#define DT_NULL			0	/* ign.   mand.	 mand. */#define DT_NEEDED		1	/* d_val  opt.	 opt.  */#define DT_PLTRELSZ		2	/* d_val  opt.	 opt.  */#define DT_PLTGOT		3	/* d_ptr  opt.	 opt.  */#define DT_HASH			4	/* d_ptr  mand.	 mand. */#define DT_STRTAB		5	/* d_ptr  mand.	 mand. */#define DT_SYMTAB		6	/* d_ptr  mand.	 mand. */#define DT_RELA			7	/* d_ptr  mand.	 opt.  */#define DT_RELASZ		8	/* d_val  mand.	 opt.  */#define DT_RELAENT		9	/* d_val  mand.	 opt.  */#define DT_STRSZ		10	/* d_val  mand.	 mand. */#define DT_SYMENT		11	/* d_val  mand.	 mand. */#define DT_INIT			12	/* d_ptr  opt.	 opt.  */#define DT_FINI			13	/* d_ptr  opt.	 opt.  */#define DT_SONAME		14	/* d_val  ign.	 opt.  */#define DT_RPATH		15	/* d_val  opt.	 ign.  */#define DT_SYMBOLIC		16	/* ign.   ign.	 opt.  */#define DT_REL			17	/* d_ptr  mand.	 opt.  */#define DT_RELSZ		18	/* d_val  mand.	 opt.  */#define DT_RELENT		19	/* d_val  mand.	 opt.  */#define DT_PLTREL		20	/* d_val  opt.	 opt.  */#define DT_DEBUG		21	/* d_ptr  opt.	 ign.  */#define DT_TEXTREL		22	/* ign.   opt.	 opt.  */#define DT_JMPREL		23	/* d_ptr  opt.	 opt.  */#define DT_BIND_NOW		24	/* ign.   opt.	 opt.  */#define DT_INIT_ARRAY		25	/* d_ptr  opt.	 opt.  */#define DT_FINI_ARRAY		26	/* d_ptr  opt.	 opt.  */#define DT_INIT_ARRAYSZ		27	/* d_val  opt.	 opt.  */#define DT_FINI_ARRAYSZ		28	/* d_val  opt.	 opt.  */#define DT_RUNPATH		29	/* d_val  opt.	 opt.  */#define DT_FLAGS		30	/* d_val  opt.	 opt.  */#define DT_ENCODING		32	/* odd/even encoding rule starts here */#define DT_PREINIT_ARRAY	32	/* d_ptr  opt.	 ign.  */#define DT_PREINIT_ARRAYSZ	33	/* d_val  opt.	 ign.  */#define DT_NUM			34#define DT_LOOS			0x6000000D#define DT_HIOS			0x6ffff000#define DT_LOPROC		0x70000000#define DT_HIPROC		0x7fffffff/* * DT_FLAGS values */#define DF_ORIGIN	0x1#define DF_SYMBOLIC	0x2#define DF_TEXTREL	0x4#define DF_BIND_NOW	0x8#define DF_STATIC_TLS	0x10/* * Solaris extensions */#define DT_VALRNGLO	0x6ffffd00#define DT_CHECKSUM	0x6ffffdf8#define DT_PLTPADSZ	0x6ffffdf9#define DT_MOVEENT	0x6ffffdfa#define DT_MOVESZ	0x6ffffdfb#define DT_FEATURE_1	0x6ffffdfc#define DT_POSFLAG_1	0x6ffffdfd#define DT_SYMINSZ	0x6ffffdfe#define DT_SYMINENT	0x6ffffdff#define DT_VALRNGHI	0x6ffffdff#define DT_ADDRRNGLO	0x6ffffe00#define DT_CONFIG	0x6ffffefa#define DT_DEPAUDIT	0x6ffffefb#define DT_AUDIT	0x6ffffefc#define DT_PLTPAD	0x6ffffefd#define DT_MOVETAB	0x6ffffefe#define DT_SYMINFO	0x6ffffeff#define DT_ADDRRNGHI	0x6ffffeff#define DT_RELACOUNT	0x6ffffff9#define DT_RELCOUNT	0x6ffffffa#define DT_FLAGS_1	0x6ffffffb#define DT_VERDEF	0x6ffffffc#define DT_VERDEFNUM	0x6ffffffd#define DT_VERNEED	0x6ffffffe#define DT_VERNEEDNUM	0x6fffffff#define DT_AUXILIARY	0x7ffffffd#define DT_USED		0x7ffffffe#define DT_FILTER	0x7fffffff/* * GNU extensions */#define DT_VERSYM	0x6ffffff0/* * DT_FEATURE_1 values */#define DTF_1_PARINIT	0x1#define DTF_1_CONFEXP	0x2/* * DT_POSFLAG_1 values */#define DF_P1_LAZYLOAD	0x1#define DF_P1_GROUPPERM	0x2/* * DT_FLAGS_1 values */#define DF_1_NOW	0x00000001#define DF_1_GLOBAL	0x00000002#define DF_1_GROUP	0x00000004#define DF_1_NODELETE	0x00000008#define DF_1_LOADFLTR	0x00000010#define DF_1_INITFIRST	0x00000020#define DF_1_NOOPEN	0x00000040#define DF_1_ORIGIN	0x00000080#define DF_1_DIRECT	0x00000100#define DF_1_TRANS	0x00000200#define DF_1_INTERPOSE	0x00000400#define DF_1_NODEFLIB	0x00000800#define DF_1_NODUMP	0x00001000#define DF_1_CONFALT	0x00002000#define DF_1_ENDFILTEE	0x00004000#define DF_1_DISPRELDNE	0x00008000#define DF_1_DISPRELPND	0x00010000/* * Syminfo structure */typedef struct {    Elf32_Half		si_boundto;    Elf32_Half		si_flags;} Elf32_Syminfo;#if __LIBELF64typedef struct {    Elf64_Half		si_boundto;    Elf64_Half		si_flags;} Elf64_Syminfo;#endif /* __LIBELF64 *//* * Syminfo version (stored in unused first entry) */#define SYMINFO_NONE	0#define SYMINFO_CURRENT	1#define SYMINFO_NUM	2/* * si_boundto special values */#define SYMINFO_BT_LOWRESERVE	0xff00#define SYMINFO_BT_PARENT	0xfffe	/* bound to parent */#define SYMINFO_BT_SELF		0xffff	/* bound to self *//* * si_flags */#define SYMINFO_FLG_DIRECT	0x01	/* bound to an object */#define SYMINFO_FLG_PASSTHRU	0x02	/* pass-thru symbol */#define SYMINFO_FLG_COPY	0x04	/* result of a copy relocation */#define SYMINFO_FLG_LAZYLOAD	0x08	/* bound to lazy-loaded object *//* * Version definitions */typedef struct {    Elf32_Half		vd_version;    Elf32_Half		vd_flags;    Elf32_Half		vd_ndx;    Elf32_Half		vd_cnt;    Elf32_Word		vd_hash;    Elf32_Word		vd_aux;    Elf32_Word		vd_next;} Elf32_Verdef;typedef struct {    Elf32_Word		vda_name;    Elf32_Word		vda_next;} Elf32_Verdaux;typedef struct {    Elf32_Half		vn_version;    Elf32_Half		vn_cnt;    Elf32_Word		vn_file;    Elf32_Word		vn_aux;    Elf32_Word		vn_next;} Elf32_Verneed;typedef struct {    Elf32_Word		vna_hash;    Elf32_Half		vna_flags;    Elf32_Half		vna_other;    Elf32_Word		vna_name;    Elf32_Word		vna_next;} Elf32_Vernaux;typedef Elf32_Half	Elf32_Versym;#if __LIBELF64typedef struct {    Elf64_Half		vd_version;    Elf64_Half		vd_flags;    Elf64_Half		vd_ndx;    Elf64_Half		vd_cnt;    Elf64_Word		vd_hash;    Elf64_Word		vd_aux;    Elf64_Word		vd_next;} Elf64_Verdef;typedef struct {    Elf64_Word		vda_name;    Elf64_Word		vda_next;} Elf64_Verdaux;typedef struct {    Elf64_Half		vn_version;    Elf64_Half		vn_cnt;    Elf64_Word		vn_file;    Elf64_Word		vn_aux;    Elf64_Word		vn_next;} Elf64_Verneed;typedef struct {    Elf64_Word		vna_hash;    Elf64_Half		vna_flags;    Elf64_Half		vna_other;    Elf64_Word		vna_name;    Elf64_Word		vna_next;} Elf64_Vernaux;typedef Elf64_Half	Elf64_Versym;#endif /* __LIBELF64 *//* * vd_version */#define VER_DEF_NONE	0#define VER_DEF_CURRENT	1#define VER_DEF_NUM	2/* * vn_version */#define VER_NEED_NONE		0#define VER_NEED_CURRENT	1#define VER_NEED_NUM		2/* * vd_flags / vna_flags */#define VER_FLG_BASE	0x1	/* vd_flags only */#define VER_FLG_WEAK	0x2/* * Elf*_Versym special values */#define VER_NDX_LOCAL	0#define VER_NDX_GLOBAL	1/* * Move section */#if __LIBELF64typedef struct {    Elf32_Lword		m_value;    Elf32_Word		m_info;    Elf32_Word		m_poffset;    Elf32_Half		m_repeat;    Elf32_Half		m_stride;} Elf32_Move;typedef struct {    Elf64_Lword		m_value;    Elf64_Xword		m_info;    Elf64_Xword		m_poffset;    Elf64_Half		m_repeat;    Elf64_Half		m_stride;} Elf64_Move;#define ELF32_M_SYM(info)	((info)>>8)#define ELF32_M_SIZE(info)	((unsigned char)(info))#define ELF32_M_INFO(sym, sz)	(((sym)<<8)+(unsigned char)(sz))#define ELF64_M_SYM(info)	((Elf64_Xword)(info)>>8)#define ELF64_M_SIZE(info)	((unsigned char)(info))#define ELF64_M_INFO(sym, sz)	(((Elf64_Xword)(sym)<<8)+(unsigned char)(sz))#endif /* __LIBELF64 */#ifdef __cplusplus}#endif /* __cplusplus */#endif /* _ELF_REPL_H */

⌨️ 快捷键说明

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