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


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


dlmodadd() — register information about dynamically generated functions


cc [flag]... file... -ldl [library]...

#include <dlfcn.h>

void* dlmodadd(void* associate_handle, void *func_start, size_t func_size, void *linkage_ptr, void *unwind_info);


dlmodadd() registers information about a dynamically generated function, which can be retrived through dlmodinfo(). The dlmodremove() interface can be used to remove the registered information.

associate_handle is the module handle for an existing module with which the new function is associated. When the dynamic loader is called from the new function, it will behave as if it had been called from the associated module. This handle must be a handle returned by dlopen() or dlget().

func_start is the starting address of the generated machine code for the function. It is NOT the address of a function descriptor.

func_size is the size, in bytes, of the generated machine code.

linkage_ptr is the gp (global pointer) value to be used for the function. It could be the gp of the associated module. It must be set to a valid value, even if the generated code doesn't actually use gp, as it is required at a minimum for following the personality routine pointer in the unwind information.

unwind_info is a pointer to the beginning of the unwind info block for the function. The unwind info block contains the header word, unwind descriptors, personality routine pointer, and language-specific data, as described in the Itanium-based system Software Conventions and Runtime Architecture document.

When dlmodadd() is invoked to register information about a dynamically generated function, the dynamic loader creates an unwind header and a single-entry unwind table for the function. The unwind header is associated with the address range occupied by the dynamically generated function. The dlmodadd() routine returns a handle as identification of the newly-added function. Handles returned by dlmodadd() share the same namespace as handles returned by dlopen() and dlget(), but they may not be used in calls to dlclose() or dlsym(). If dlmodinfo() is called with an ip_value that belongs to a function that has been registered with dlmodadd(), it returns the associate_handle specified during dlmodadd() invocation. If a library is unloaded by dlclose(), the unwind info for all dynamically generated functions associated with the library being unloaded is also removed.


This routine is thread-safe.


If successful, dlmodadd() returns a handle as identification of the newly-added function. NULL is returned otherwise.


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


Out of memory.


Cannot apply relocation in library.


siginhibit failed on entry to dlmodadd().


sigenable failed on exit from dlmodadd().


Invalid dlmodadd() argument .


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


dlmodadd() was developed by HP.


ld(1), dlclose(3C), dlerrno(3C), dlerror(3C), dlget(3C), dlmodremove(3C), dlopen(3C), dlsym(3C), a.out(4), dld.so(5).

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.