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

📄 solib_depend.h

📁 T-kernel 的extension源代码
💻 H
字号:
/* *---------------------------------------------------------------------- *    T-Kernel / Standard Extension * *    Copyright (C) 2006 by Ken Sakamura. All rights reserved. *    T-Kernel / Standard Extension is distributed  *      under the T-License for T-Kernel / Standard Extension. *---------------------------------------------------------------------- * *    Version:   1.00.00 *    Released by T-Engine Forum(http://www.t-engine.org) at 2006/8/11. * *---------------------------------------------------------------------- *//* *	solib_depend.h * *	Shared object (SO) support library */#ifndef __SYS_SOLIB_DEPEND_H__#define __SYS_SOLIB_DEPEND_H__#include <basic.h>#include <extension/dynload.h>#include <sys/queue.h>#include <sys/elf.h>#ifdef __cplusplusextern "C" {#endiftypedef struct dlinfo	DLInfo;/* * Symbol scope list */typedef struct {	W		nent;		/* Number of entries */	DLInfo		**ent;		/* Target for search (variable-length array) */} DLScope;/* * Object management information */struct dlinfo {	QUEUE			q;		/* For management information connection */	W			count;		/* Reference count */	W			dllcount;	/* DLL loading count */	VP			dllhandle;	/* DLL handle */	SOBJ_HDR		soHdr;		/* Shared object file */	W			ldid;		/* Loading ID */	P_DYNLDINF		ldinf;		/* Loading information */	W			ldofs;		/* Loading offset */	DLInfo			*loader;	/* First loaded (DLL) main */	unsigned int		global:1;	/* Global scope: True */	unsigned int		relocated:1;	/* Already relocated: True */	unsigned int		nowloading:1;	/* In process of loading: True */	unsigned int		initcalled:1;	/* init has been called: True */	/* Loading object information */	Elf32_Dyn		*dyn;		/* Dynamic section */	VP			*got;		/* Global offset table									DT_PLTGOT */	Elf32_Rel		*reltab;	/* Relocation table DT_REL */	UW			relsz;		/* Relocation table size DT_RELSZ */	Elf32_Rela		*relatab;	/* Relocation table DT_RELA */	UW			relasz;		/* Relocation table size DT_RELASZ */	Elf32_Rel		*jreltab;	/* Relocation table DT_JMPREL */	UW			jrelsz;		/* Relocation table size DT_PLTRELSZ */	UB			*strtab;	/* String table	DT_STRTAB */	Elf32_Sym		*symtab;	/* Symbol table	DT_SYMTAB */	struct hash {				/* Hash table	DT_HASH */		UW	nbucket;		UW	*bucket;		UW	*chain;	} hash;	FP			init;		/* Initialization routine	DT_INIT */	FP			fini;		/* Termination processing routine	DT_FINI */	UW			mips_gotsym;	UW			mips_local_gotno;	UW			mips_symtabno;	/* Symbol search list */	DLScope			search;		/* Dependent library */	/* Symbol scope list */	DLScope			*scope[4];	/* Standard scope */	DLScope			*lscope[2];	/* Local scope */};IMPORT DLInfo	__dlInfo;#define	DLInfoID(dlp)	( (UW)(dlp) >> 2 )	/* Access handle *//* * Conversion from link address to loaded address *	VP LDADR( DLInfo *dlp, VP vp ) */#define	LDADR(dlp, vp)	( (VP)((UW)(vp) + (UW)(dlp)->ldofs) )/* * Exclusive control for DLInfo access */IMPORT ER	__so_lock( BOOL ignore_mintr );IMPORT void	__so_unlock( void );/* * solib entry */IMPORT ER	__so_loading( DLInfo **dlpp, SOBJ_HDR *soHdr, DLInfo *loader );IMPORT ER	__so_depsloading( DLInfo *loader, UW global );IMPORT ER	__so_relocate( DLInfo *loader, UW lazy );IMPORT void	__so_callinit( DLInfo *loader );IMPORT void	__so_callfini( DLInfo *loader );IMPORT UW	__so_resolve( DLInfo *dlp, UB *name, UW reltype, Elf32_Sym **sym );IMPORT UW	__so_localresolve( DLInfo *dlp, UB *name, DLInfo *skip, Elf32_Sym **sym );IMPORT void	__freeDLInfo( DLInfo *dlp );#ifdef __cplusplus}#endif#endif /* __SYS_SOLIB_DEPEND_H__ */

⌨️ 快捷键说明

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