Skip to content

Most visited

Recently visited

navigation

dlext.h File Reference

dlext.h File Reference

Data Structures

struct  android_dlextinfo
 

Enumerations

enum  {
  ANDROID_DLEXT_RESERVED_ADDRESS = 0x1, ANDROID_DLEXT_RESERVED_ADDRESS_HINT = 0x2, ANDROID_DLEXT_WRITE_RELRO = 0x4, ANDROID_DLEXT_USE_RELRO = 0x8,
  ANDROID_DLEXT_USE_LIBRARY_FD = 0x10, ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET = 0x20, ANDROID_DLEXT_FORCE_LOAD = 0x40, ANDROID_DLEXT_FORCE_FIXED_VADDR = 0x80,
  ANDROID_DLEXT_LOAD_AT_FIXED_ADDRESS = 0x100, ANDROID_DLEXT_USE_NAMESPACE = 0x200, ANDROID_DLEXT_VALID_FLAG_BITS
}
 

Functions

void * android_dlopen_ext (const char *__filename, int __flags, const android_dlextinfo *__info) __INTRODUCED_IN(21)
 

Detailed Description

Advanced dynamic library opening support. Most users will want to use the standard dlopen(3) functionality in <dlfcn.h> instead.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

Bitfield definitions for android_dlextinfo::flags.

Enumerator
ANDROID_DLEXT_RESERVED_ADDRESS 

When set, the reserved_addr and reserved_size fields must point to an already-reserved region of address space which will be used to load the library if it fits.

If the reserved region is not large enough, loading will fail.

ANDROID_DLEXT_RESERVED_ADDRESS_HINT 

Like ANDROID_DLEXT_RESERVED_ADDRESS, but if the reserved region is not large enough, the linker will choose an available address instead.

ANDROID_DLEXT_WRITE_RELRO 

When set, write the GNU RELRO section of the mapped library to relro_fd after relocation has been performed, to allow it to be reused by another process loading the same library at the same address. This implies ANDROID_DLEXT_USE_RELRO.

This is mainly useful for the system WebView implementation.

ANDROID_DLEXT_USE_RELRO 

When set, compare the GNU RELRO section of the mapped library to relro_fd after relocation has been performed, and replace any relocated pages that are identical with a version mapped from the file.

This is mainly useful for the system WebView implementation.

ANDROID_DLEXT_USE_LIBRARY_FD 

Use library_fd instead of opening the file by name. The filename parameter is still used to identify the library.

ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET 

If opening a library using library_fd read it starting at library_fd_offset. This is mainly useful for loading a library stored within another file (such as uncompressed inside a ZIP archive). This flag is only valid when ANDROID_DLEXT_USE_LIBRARY_FD is set.

ANDROID_DLEXT_FORCE_LOAD 

When set, do not use stat(2) to check if the library has already been loaded.

This flag allows forced loading of the library in the case when for some reason multiple ELF files share the same filename (because the already-loaded library has been removed and overwritten, for example).

Note that if the library has the same DT_SONAME as an old one and some other library has the soname in its DT_NEEDED list, the first one will be used to resolve any dependencies.

ANDROID_DLEXT_FORCE_FIXED_VADDR 

When set, if the minimum p_vaddr of the ELF file's PT_LOAD segments is non-zero, the dynamic linker will load it at that address.

This flag is for ART internal use only.

ANDROID_DLEXT_LOAD_AT_FIXED_ADDRESS 

Instructs dlopen to load the library at the address specified by reserved_addr.

The difference between ANDROID_DLEXT_LOAD_AT_FIXED_ADDRESS and ANDROID_DLEXT_RESERVED_ADDRESS is that for ANDROID_DLEXT_LOAD_AT_FIXED_ADDRESS the linker reserves memory at reserved_addr whereas for ANDROID_DLEXT_RESERVED_ADDRESS the linker relies on the caller to reserve the memory.

This flag can be used with ANDROID_DLEXT_FORCE_FIXED_VADDR. When ANDROID_DLEXT_FORCE_FIXED_VADDR is set and load_bias is not 0 (load_bias is the minimum p_vaddr of all PT_LOAD segments) this flag is ignored because the linker has to pick one address over the other and this way is more convenient for ART. Note that ANDROID_DLEXT_FORCE_FIXED_VADDR does not generate an error when the minimum p_vaddr is 0.

Cannot be used with ANDROID_DLEXT_RESERVED_ADDRESS or ANDROID_DLEXT_RESERVED_ADDRESS_HINT.

This flag is for ART internal use only.

ANDROID_DLEXT_USE_NAMESPACE 

This flag used to load library in a different namespace. The namespace is specified in library_namespace.

This flag is for internal use only (since there is no NDK API for namespaces).

ANDROID_DLEXT_VALID_FLAG_BITS 

Mask of valid bits.

Function Documentation

◆ android_dlopen_ext()

void* android_dlopen_ext ( const char *  __filename,
int  __flags,
const android_dlextinfo __info 
)

Opens the given library. The __filename and __flags arguments are the same as for dlopen(3), with the Android-specific flags supplied via the flags member of __info.

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience. (April 2018 — Developer Survey)