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

dlmodadd(3C)

HP-UX 11i Version 3: February 2007
» 

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index

NAME

dlmodadd() — register information about dynamically generated functions

SYNOPSIS

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);

DESCRIPTION

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.

MULTITHREAD USAGE

This routine is thread-safe.

RETURN VALUE

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

ERRORS

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

RTLD_ERR_NO_MEMORY

Out of memory.

RTLD_ERR_CANT_APPLY_RELOC

Cannot apply relocation in library.

RTLD_ERR_SIGINHIBIT_FAILED

siginhibit failed on entry to dlmodadd().

RTLD_ERR_SIGENABLE_FAILED

sigenable failed on exit from dlmodadd().

RTLD_ERR_INV_DLMODADD_ARGUMENT

Invalid dlmodadd() argument .

RTLD_ERR_SETCANCELSTATE_FAILED

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

AUTHOR

dlmodadd() was developed by HP.

SEE ALSO

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.