diff options
Diffstat (limited to 'lib/libc/gen/dlinfo.3')
-rw-r--r-- | lib/libc/gen/dlinfo.3 | 282 |
1 files changed, 0 insertions, 282 deletions
diff --git a/lib/libc/gen/dlinfo.3 b/lib/libc/gen/dlinfo.3 deleted file mode 100644 index d00f074..0000000 --- a/lib/libc/gen/dlinfo.3 +++ /dev/null @@ -1,282 +0,0 @@ -.\" -.\" Copyright (c) 2003 Alexey Zelkin <phantom@FreeBSD.org> -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" $FreeBSD$ -.\" -.Dd February 14, 2003 -.Dt DLINFO 3 -.Os -.Sh NAME -.Nm dlinfo -.Nd information about dynamically loaded object -.Sh LIBRARY -.Lb libc -.Sh SYNOPSIS -.In link.h -.In dlfcn.h -.Ft int -.Fn dlinfo "void * restrict handle" "int request" "void * restrict p" -.Sh DESCRIPTION -The -.Fn dlinfo -function provides information about dynamically loaded object. -The action taken by -.Fn dlinfo -and exact meaning and type of -.Fa p -argument depend on value of the -.Fa request -argument provided by caller. -.Pp -The -.Fa handle -argument is either the value returned from the -.Xr dlopen 3 -function call or special handle -.Dv RTLD_SELF . -If -.Fa handle -is the value returned from -.Xr dlopen 3 , -the information returned by the -.Fn dlinfo -function pertains to the specified object. -If handle is the special handle -.Dv RTLD_SELF , -the information returned pertains to the caller itself. -.Pp -Possible values for the -.Fa request -argument are: -.Bl -tag -width indent -.It Dv RTLD_DI_LINKMAP -Retrieve the -.Vt Link_map -.Pq Vt "struct link_map" -structure pointer for the specified -.Fa handle . -On successful return, the -.Fa p -argument is filled with the pointer to the -.Vt Link_map -structure -.Pq Fa "Link_map **p" -describing a shared object specified by the -.Fa handle -argument. -The -.Vt Link_map -structures are maintained as a doubly linked list by -.Xr ld.so 1 , -in the same order as -.Xr dlopen 3 -and -.Xr dlclose 3 -are called. -See -.Sx EXAMPLES , -example 1. -.Pp -The -.Vt Link_map -structure is defined in -.In link.h -and has the following members: -.Bd -literal -offset indent -caddr_t l_addr; /* Base Address of library */ -const char *l_name; /* Absolute Path to Library */ -const void *l_ld; /* Pointer to .dynamic in memory */ -struct link_map *l_next, /* linked list of mapped libs */ - *l_prev; -.Ed -.Bl -tag -width ".Va l_addr" -.It Va l_addr -The base address of the object loaded into memory. -.It Va l_name -The full name of the loaded shared object. -.It Va l_ld -The address of the dynamic linking information segment -.Pq Dv PT_DYNAMIC -loaded into memory. -.It Va l_next -The next -.Vt Link_map -structure on the link-map list. -.It Va l_prev -The previous -.Vt Link_map -structure on the link-map list. -.El -.It Dv RTLD_DI_SERINFO -Retrieve the library search paths associated with the given -.Fa handle -argument. -The -.Fa p -argument should point to -.Vt Dl_serinfo -structure buffer -.Pq Fa "Dl_serinfo *p" . -The -.Vt Dl_serinfo -structure must be initialized first with the -.Dv RTLD_DI_SERINFOSIZE -request. -.Pp -The returned -.Vt Dl_serinfo -structure contains -.Va dls_cnt -.Vt Dl_serpath -entries. -Each entry's -.Va dlp_name -field points to the search path. -The corresponding -.Va dlp_info -field contains one of more flags indicating the origin of the path (see the -.Dv LA_SER_* -flags defined in the -.In link.h -header file). -See -.Sx EXAMPLES , -example 2, for a usage example. -.It Dv RTLD_DI_SERINFOSIZE -Initialize a -.Vt Dl_serinfo -structure for use in a -.Dv RTLD_DI_SERINFO -request. -Both the -.Va dls_cnt -and -.Va dls_size -fields are returned to indicate the number of search paths applicable -to the handle, and the total size of a -.Vt Dl_serinfo -buffer required to hold -.Va dls_cnt -.Vt Dl_serpath -entries and the associated search path strings. -See -.Sx EXAMPLES , -example 2, for a usage example. -.It Va RTLD_DI_ORIGIN -Retrieve the origin of the dynamic object associated with the handle. -On successful return, -.Fa p -argument is filled with the -.Vt char -pointer -.Pq Fa "char *p" . -.El -.Sh RETURN VALUES -The -.Fn dlinfo -function returns 0 on success, or \-1 if an error occurred. -Whenever an error has been detected, a message detailing it can -be retrieved via a call to -.Xr dlerror 3 . -.Sh EXAMPLES -Example 1: Using -.Fn dlinfo -to retrieve -.Vt Link_map -structure. -.Pp -The following example shows how dynamic library can detect the list -of shared libraries loaded after caller's one. -For simplicity, error checking has been omitted. -.Bd -literal -offset indent -Link_map *map; - -dlinfo(RTLD_SELF, RTLD_DI_LINKMAP, &map); - -while (map != NULL) { - printf("%p: %s\\n", map->l_addr, map->l_name); - map = map->l_next; -} -.Ed -.Pp -Example 2: Using -.Fn dlinfo -to retrieve the library search paths. -.Pp -The following example shows how a dynamic object can inspect the library -search paths that would be used to locate a simple filename with -.Xr dlopen 3 . -For simplicity, error checking has been omitted. -.Bd -literal -offset indent -Dl_serinfo _info, *info = &_info; -Dl_serpath *path; -unsigned int cnt; - -/* determine search path count and required buffer size */ -dlinfo(RTLD_SELF, RTLD_DI_SERINFOSIZE, (void *)info); - -/* allocate new buffer and initialize */ -info = malloc(_info.dls_size); -info->dls_size = _info.dls_size; -info->dls_cnt = _info.dls_cnt; - -/* obtain sarch path information */ -dlinfo(RTLD_SELF, RTLD_DI_SERINFO, (void *)info); - -path = &info->dls_serpath[0]; - -for (cnt = 1; cnt <= info->dls_cnt; cnt++, path++) { - (void) printf("%2d: %s\\n", cnt, path->dls_name); -} -.Ed -.Sh SEE ALSO -.Xr rtld 1 , -.Xr dladdr 3 , -.Xr dlopen 3 , -.Xr dlsym 3 -.Sh HISTORY -The -.Fn dlinfo -function first appeared in the Solaris operating system. -In -.Fx , -it first appeared in -.Fx 4.8 . -.Sh AUTHORS -.An -nosplit -The -.Fx -implementation of the -.Fn dlinfo -function was originally written by -.An Alexey Zelkin -.Aq phantom@FreeBSD.org -and later extended and improved by -.An Alexander Kabaev -.Aq kan@FreeBSD.org . -.Pp -The manual page for this function was written by -.An Alexey Zelkin -.Aq phantom@FreeBSD.org . |