Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > D

dlmodinfo(3C)

ELF Applications Only
HP-UX 11i Version 3: February 2007
» 

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index

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.

DESCRIPTION

dlmodinfo() is one of a family of routines that give the user direct access to the dynamic linking facilities. dlmodinfo() retrieves information about a loaded module from a given address value. dlmodinfo() 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 calling 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().

RETURN VALUE

If successful, dlmodinfo() returns a handle for the shared library as defined by the return value from dlopen(). NULL is returned otherwise. The return values are type-converted to uint64_t.

ERRORS

If dlmodinfo() fails, a subsequent call to dlerrno() returns one of the following values:

RTLD_ERR_CANT_APPLY_RELOC

Cannot apply relocation in library.

RTLD_ERR_INV_ADDRESS

Invalid address.

RTLD_ERR_INV_BUFFER_ARGUMENT

Invalid descriptor argument

RTLD_ERR_INV_DESC_VERSION

Invalid descriptor version.

RTLD_ERR_NO_MEMORY

Out of memory.

RTLD_ERR_READ_TGT_MEM_FAILED

read_tgt_mem failed in reading target memory.

RTLD_ERR_SETCANCELSTATE_FAILED

__thread_setcancelstate failed on entry to or exit from dlmodinfo().

RTLD_ERR_SIGENABLE_FAILED

sigenable failed on exit from dlmodinfo().

RTLD_ERR_SIGINHIBIT_FAILED

siginhibit failed on entry to dlmodinfo().

AUTHOR

dlmodinfo was developed by HP.

SEE ALSO

System Tools

exec(2)

System loader.

ld(1)

Invokes the link editor.

Miscellaneous

a.out(4)

Assembler, compiler, and linker output.

dlclose(3C)

Unloads a shared library previously loaded by dlopen().

dlerror(3C)

Returns the last error message recorded by dld.

dlerrno(3C)

Returns an error code for the last error recorded by dld.

dlget(3C)

Returns information about a loaded module.

dlgetname(3C)

Returns the name of the storage containing a load module.

dlopen(3C)

Loads a shared library.

dlsym(3C)

Gets the address of a symbol in a shared library.

Texts and Tutorials

HP-UX Linker and Libraries Online User Guide

(See the +help option)

HP-UX Linker and Libraries User's Guide

(See manuals(5) for ordering information)

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.