dladdr()

Translate an address to symbolic information

Synopsis:

#include <dlfcn.h>

int dladdr( void *address, 
            Dl_info *dlip );

Arguments:

address
The address for which you want symbolic information.
dlip
A pointer to a Dl_info structure where the function can store the symbolic information. Your application must allocate the space for this structure; dladdr() fills in the members, based on the specified address.

The Dl_info structure includes the following members:

If dladdr() can't find a symbol that describes the specified address, the function sets dli_sname and dli_saddr to NULL.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The dladdr() function determines whether the specified address is located within one of the objects that make up the calling application's address space.


Note: The dladdr() function is available only to dynamically linked processes.

Returns:

0 if the specified address can't be matched, or nonzero if it could be matched.

Classification:

Unix

Safety:
Cancellation point No
Interrupt handler No
Signal handler No
Thread Yes

Caveats:

The Dl_info pointers may become invalid if objects are removed via dlclose().

There's no way to determine which symbol you'll get if multiple symbols are mapped to the same address.

See also:

dlclose(), dlerror(), dlopen(), dlsym()

Dynamic Linking chapter of the System Architecture guide

Lazy loading in the “Compiling and Debugging” chapter of the QNX Neutrino Programmer's Guide