C++ initialization in the BPABI DLL-like model
A dynamically linked library (DLL) supports the initialization of static constructors with a table that contains references to initializer functions that perform the initialization.
The table is stored in an ELF section with a special section type of
SHT_INIT_ARRAY
. For each of these initializers there is a relocation of
type R_ARM_TARGET1
to a function that performs the initialization.
The ELF Application Binary Interface (ABI) specification
describes R_ARM_TARGET1
as either a relative form, or an absolute form.
The ARM C libraries use the relative form. For example, if the linker detects a definition
of the ARM C library __cpp_initialize__aeabi
, it uses the relative form of
R_ARM_TARGET1
otherwise it uses the absolute form.