ZHCADC4A September 2011 – March 2014
加载模块可能需要在引用或调用之前执行初始化代码,例如模块中静态对象的 C++ 构造函数。类似地,当模块终止时,可能需要析构函数之类的终止代码。
模块使用动态段中的 DT_INIT、DT_INIT_ARRAY、DT_PREINIT_ARRAY、DT_FINI 和 DT_FINI_ARRAY 条目来指定任何所需的初始化和终止,如 System V ABI 所指定。
与初始化一样,加载器和/或执行环境负责根据由模块相关性施加的排序约束来执行终止函数。