==== ===== ==== ========== =============
DT_NULL 0 ignored mandatory mandatory
DT_NEEDED 1 d_val optional optional
DT_PLTRELSZ 2 d_val optional optional
DT_PLTGOT 3 d_ptr optional optional
DT_HASH 4 d_ptr mandatory mandatory
DT_STRTAB 5 d_ptr mandatory mandatory
DT_SYMTAB 6 d_ptr mandatory mandatory
DT_RELA 7 d_ptr mandatory optional
DT_RELASZ 8 d_val mandatory optional
DT_RELAENT 9 d_val mandatory optional
DT_STRSZ 10 d_val mandatory mandatory
DT_SYMENT 11 d_val mandatory mandatory
DT_INIT 12 d_ptr optional optional
DT_FINI 13 d_ptr optional optional
DT_SONAME 14 d_val ignored optional
DT_RPATH 15 d_val optional ignored
DT_SYMBOLIC 16 ignored ignored optional
DT_REL 17 d_ptr mandatory optional
DT_RELSZ 18 d_val mandatory optional
DT_RELENT 19 d_val mandatory optional
DT_PLTREL 20 d_val optional optional
DT_DEBUG 21 d_ptr optional ignored
DT_TEXTREL 22 ignored optional optional
DT_JMPREL 23 d_ptr optional optional
DT_LOPROC 0x70000000 unspecified unspecified unspecified
DT_HIPROC 0x7fffffff unspecified unspecified unspecified
* DT_NULL
一个DT_NULL标记的入口表示了_DYNAMIC数组的结束。
* DT_NEEDED
这个元素保存着以NULL结尾的字符串表的偏移量,那些字符串是所需库的名字。
该偏移量是以DT_STRTAB 为入口的表的索引。看“Shared Object Dependencies”
关于那些名字的更多信息。动态数组可能包含了多个这个类型的入口。那些
入口的相关顺序是重要的,虽然他们跟其他入口的关系是不重要的。
* DT_PLTRELSZ
该元素保存着跟PLT关联的重定位入口的总共字节大小。假如一个入口类型
DT_JMPREL存在,那么DT_PLTRELSZ也必须存在。
* DT_PLTGOT
该元素保存着跟PLT关联的地址和(或)是GOT。具体细节看处理器补充
(processor supplement)部分。
* DT_HASH
该元素保存着符号哈希表的地址,在“哈希表”有描述。该哈希表指向
被DT_SYMTAB元素引用的符号表。
* DT_STRTAB
该元素保存着字符串表地址,在第一部分有描述,包括了符号名,库名,
和一些其他的在该表中的字符串。
* DT_SYMTAB
该元素保存着符号表的地址,在第一部分有描述,对32-bit类型的文档来
说,关联着一个Elf32_Sym入口。
* DT_RELA
该元素保存着重定位表的地址,在第一部分有描述。在表中的入口有明确的
加数,就象32-bit类型文档的Elf32_Rela。一个object文档可能好多个重定位
section。当为一个可执行和共享文档建立重定位表的时候,连接编辑器连接
那些section到一个单一的表。尽管在object文档中那些section是保持单独的。
动态连接器只看成是个简单的表。当动态连接器为一个可执行文档创建一个
进程映象或是加一个共享object到进程映象中,他读重定位表和执行相关的
动作。假如该元素存在,动态结构必须也要有DT_RELASZ和DT_RELAENT元素。
当文档的重定位是mandatory,DT_RELA 或 DT_REL可能出现(同时出现是
允许的,但是不必要的)。
* DT_RELASZ
该元素保存着DT_RELA重定位表总的字节大小。
* DT_RELAENT
该元素保存着DT_RELA重定位入口的字节大小。
* DT_STRSZ
该元素保存着字符串表的字节大小。
* DT_SYMENT
该元素保存着符号表入口的字节大小。
* DT_INIT
该元素保存着初始化函数的地址,在下面“初始化和终止函数”中讨论。
* DT_FINI
该元素保存着终止函数的地址,在下面“初始化和终止函数”中讨论。
* DT_SONAME
该元素保存着以NULL结尾的字符串的字符串表偏移量,那些名字是共享
object的名字。偏移量是在DT_STRTAB入口记录的表的索引。关于那些名字看
Shared Object Dependencies 部分获得更多的信息。
* DT_RPATH
该元素保存着以NULL结尾的搜索库的搜索目录字符串的字符串表偏移量。
在共享object依赖关系(Shared Object Dependencies)中有讨论
* DT_SYMBOLIC
在共享object库中出现的该元素为在库中的引用改变动态连接器符号解析的算法。
替代在可执行文档中的符号搜索,动态连接器从他自己的共享object开始。假如
一个共享的object提供引用参考失败,那么动态连接器再照常的搜索可执行文档
和其他的共享object。
* DT_REL
该元素相似于DT_RELA,除了他的表有潜在的加数,正如32-bit文档类型的
Elf32_Rel相同。假如这个元素存在,他的动态结构必须也同时要有DT_RELSZ
和DT_RELENT的元素。
* DT_RELSZ
该元素保存着DT_REL重定位表的总字节大小。
* DT_RELENT
该元素保存着DT_RELENT重定为入口的字节大小。
* DT_PLTREL
该成员指明了PLT指向的重定位入口的类型。适当地, d_val成员保存着
DT_REL或DT_RELA。在一个PLT中的任何重定位必须使用相同的转换。
* DT_DEBUG
该成员被调试使用。他的内容没有被ABI指定;访问该入口的程式不是
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




