| DLINFO(3) | Library Functions Manual | DLINFO(3) | 
dlinfo —
#include <link.h>
#include <dlfcn.h>
int
  
  dlinfo(void
    *handle, int
    request, void
  *p);
dlinfo() function provides information about a
  dynamically loaded object. The action taken by
  dlinfo() and exact meaning and type of
  p argument depend on value of the
  request argument provided by caller.
The handle argument is either the value
    returned from the dlopen(3)
    function call or special handle RTLD_SELF. If
    handle is the value returned from
    dlopen(3), the information
    returned by the dlinfo() function pertains to the
    specified object. If handle is the special handle
    RTLD_SELF, the information returned pertains to the
    caller itself.
Possible values for the request argument are:
RTLD_DI_LINKMAPThe Link_map structure is defined in
        <link.h> and has the
        following members:
caddr_t         l_addr;    /* Base Address of library */
#ifdef __mips__
caddr_t         l_offs;    /* Load Offset of library */
#endif
const char      *l_name;   /* Absolute Path to Library */
void            *l_ld;     /* Pointer to .dynamic in memory */
struct link_map *l_next,   /* linked list of mapped libs */
                *l_prev;
    
    PT_DYNAMIC) loaded into memory.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
  dlerror(3).
dlinfo() to retrieve
  Link_map structure.
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.
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;
}
dlinfo() function first appeared in the Solaris
  operating system. In NetBSD, it first appeared in
  NetBSD 5.1.
dlinfo() function was written by
  Antti Kantee
  <pooka@NetBSD.org>.
The manual page for this function was written by Alexey Zelkin <phantom@FreeBSD.org> and adapted to NetBSD by Kamil Rytarowski <kamil@NetBSD.org>.
| January 13, 2020 | NetBSD 10.0 |