usr/src/cmd/sgs/include/rtld.h
changeset 12449 a87750d92895
parent 11827 d7ef53deac3f
child 12736 2d732c7bdbde
equal deleted inserted replaced
12448:f60856ebe541 12449:a87750d92895
    18  *
    18  *
    19  * CDDL HEADER END
    19  * CDDL HEADER END
    20  */
    20  */
    21 
    21 
    22 /*
    22 /*
    23  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
    23  * Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
    24  * Use is subject to license terms.
       
    25  */
    24  */
    26 #ifndef	_RTLD_H
    25 #ifndef	_RTLD_H
    27 #define	_RTLD_H
    26 #define	_RTLD_H
    28 
    27 
    29 /*
    28 /*
   595  * Define a dynamic section information descriptor.  This parallels the entries
   594  * Define a dynamic section information descriptor.  This parallels the entries
   596  * in the .dynamic section and holds auxiliary information to implement lazy
   595  * in the .dynamic section and holds auxiliary information to implement lazy
   597  * loading and filtee processing.
   596  * loading and filtee processing.
   598  */
   597  */
   599 typedef struct {
   598 typedef struct {
   600 	uint_t	di_flags;
   599 	uint_t		di_flags;
   601 	void	*di_info;
   600 	void		*di_info;
       
   601 	const char	*di_name;
   602 } Dyninfo;
   602 } Dyninfo;
   603 
   603 
   604 #define	FLG_DI_STDFLTR	0x00001		/* .dynamic entry for DT_FILTER */
   604 #define	FLG_DI_STDFLTR	0x00001		/* .dynamic entry for DT_FILTER */
   605 #define	FLG_DI_AUXFLTR	0x00002		/* .dynamic entry for DT_AUXILIARY */
   605 #define	FLG_DI_AUXFLTR	0x00002		/* .dynamic entry for DT_AUXILIARY */
   606 #define	FLG_DI_SYMFLTR	0x00004		/* .dynamic entry for DT_SYMFILTER */
   606 #define	FLG_DI_SYMFLTR	0x00004		/* .dynamic entry for DT_SYMFILTER */
   607 					/*	and DT_SYMAUXILIARY */
   607 					/*	and DT_SYMAUXILIARY */
   608 #define	MSK_DI_FILTER	0x0000f		/* mask for all filter possibilities */
   608 #define	MSK_DI_FILTER	0x0000f		/* mask for all filter possibilities */
   609 
   609 
   610 #define	FLG_DI_POSFLAG1	0x00010		/* .dynamic entry for DT_POSFLAG_1 */
   610 #define	FLG_DI_POSFLAG1	0x00010		/* .dynamic entry for DT_POSFLAG_1 */
   611 #define	FLG_DI_NEEDED	0x00020		/* .dynamic entry for DT_NEEDED */
   611 #define	FLG_DI_NEEDED	0x00020		/* .dynamic entry for DT_NEEDED */
   612 #define	FLG_DI_LAZY	0x00100		/* lazy needed entry - preceded by */
   612 #define	FLG_DI_REGISTER	0x00040		/* .dynamic entry for DT_REGISTER */
       
   613 #define	FLG_DI_IGNORE	0x00080		/* .dynamic entry should be ignored */
       
   614 
       
   615 #define	FLG_DI_LAZY	0x00100		/* lazy needed entry, preceded by */
   613 					/*    DF_P1_LAZYLOAD (DT_POSFLAG_1) */
   616 					/*    DF_P1_LAZYLOAD (DT_POSFLAG_1) */
   614 #define	FLG_DI_GROUP	0x00200		/* group needed entry - preceded by */
   617 #define	FLG_DI_GROUP	0x00200		/* group needed entry, preceded by */
   615 					/*    DF_P1_GROUPPERM (DT_POSFLAG_1) */
   618 					/*    DF_P1_GROUPPERM (DT_POSFLAG_1) */
   616 
   619 #define	FLG_DI_DEFERRED	0x00400		/* deferred needed entry, preceded by */
   617 #define	FLG_DI_LDD_DONE	0x01000		/* entry has been processed (ldd) */
   620 					/*    DF_P1_DEFERRED (DT_POSFLAG_1) */
   618 #define	FLG_DI_LAZYFAIL	0x02000		/* the lazy loading of this entry */
   621 
       
   622 #define	FLG_DI_LAZYFAIL	0x01000		/* the lazy loading of this entry */
   619 					/*    failed */
   623 					/*    failed */
       
   624 #define	FLG_DI_LDD_DONE	0x02000		/* entry has been processed (ldd) */
       
   625 #define	FLG_DI_DEF_DONE	0x04000		/* entry has been processed (dlinfo) */
       
   626 
   620 /*
   627 /*
   621  * Data structure to track AVL tree of pathnames.  This structure provides the
   628  * Data structure to track AVL tree of pathnames.  This structure provides the
   622  * basis of both the "not-found" node tree, and the "full-path" node tree.  Both
   629  * basis of both the "not-found" node tree, and the "full-path" node tree.  Both
   623  * of these trees persist for the life of a process, although the "not-found"
   630  * of these trees persist for the life of a process, although the "not-found"
   624  * tree may be moved aside during a dlopen() or dlsym() fall back operation.
   631  * tree may be moved aside during a dlopen() or dlsym() fall back operation.