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. |