HP-UX Reference (11i v1 05/09) - 3 Library Functions A-M (vol 6)
d
dlmodinfo(3C) dlmodinfo(3C)
(ELF Applications Only)
NAME
dlmodinfo() - retrieve information about a loaded module (program or shared library)
SYNOPSIS
cc [flag]... file...
-ldl [library]...
#include <dlfcn.h>
uint64_t dlmodinfo(uint64_t ip_value,
struct load_module_desc *desc,
size_t desc_size,
void *(*read_tgt_mem)(void* buffer,
uint64_t ptr,
size_t bufsiz,
int ident),
int ident_parm,
uint64_t load_map_parm);
Multithread Usage
Thread safe in libdl.sl but not in libxpdl.sl .
AUTHOR
DESCRIPTION
dlmodinfo() is one of a family of routines that give the user direct access to the dynamic linking facili-
ties. dlmodinfo() retrieves information about a loaded module from a given address value. dlmo-
dinfo()
searches all currently loaded load modules looking for a load module whose address range
(address range of all loaded segments) holds the given address value. The dlmodinfo() routine fills the
load_module_desc with information from the matching load module.
ip_value is the instruction pointer value of the requested library. If the value is
NULL, then desc contains
the module info of
dld itself. desc is a buffer of memory allocated by the user program. The dynamic
loader fills this in with module information. desc_size is the size in bytes of the desc buffer. read_tgt_mem
is a pointer to a function used by
dlmodinfo() to retrieve needed information. If the value is
NULL, the
dynamic loader uses its own internal data structures to find the correct load module and the following two
parameters are ignored.
ident_parm Is only used to pass the fourth parameter to read_tgt_mem.
load_map_parm
Is only used when calling through read_tgt_mem . It contains the starting address of
the load map.
Otherwise, the function pointer is used to read memory during its search, using these parameters:
buffer a buffer supplied by
dlmodinfo() to read into
ptr the virtual memory address to read from
bufsiz the size of buffer in bytes
ident the value of the ident_parm parameter to dlmodinfo() .
On success, read_tgt_mem returns the value of its buffer parameter, otherwise, it returns NULL.
read_tgt_mem allows dlmodinfo() to find a load module in one process on behalf of another. The cal-
ling process passes a callback via read_tgt_mem in order to read memory in a different process address
space from the one in which dlmodinfo() resides. ip_value, load_map_parm, and ptr from
read_tgt_mem can be pointers to objects in another process. For example, when a 32-bit program wants to
enquire about a 64-bit program, the ip_value and load_map_parm should be 64-bit values. Any 32-bit
pointers should be typecasted to 64 bits by the user program when passed in the ip_value or
load_map_parm parameters.
If the calling process calls dlmodinfo() with a callback registered via read_tgt_mem, it must supply the
starting address of the target process’ load map in the load_map_parm parameter to dlmodinfo. This
can be retrieved by using the
DT_HP_LOAD_MAP dynamic table entry in the target program file.
A cross-process load module operation can be done via dlmodinfo, for example, by issuing a call to
ttrace().
HP-UX 11i Version 1: September 2005 − 1 − Hewlett-Packard Company Section 3−−169