在动态链接器的角度来说,当获得控制权的时候,需要知道关于可执行文件和进程的一些信息,例如每个段的属性、程序的入口地址(未来要转交的地方)等。这些信息往往储存在进程的堆栈里,即动态链接器所需要的辅助信息数组(Auxiliary Vector)
数组的结构和 .dynamic
里面的结构一致,先是一个 32 位的类型值,然后是一个 32 位的数值
类型的值含义有:
- 0:结束
- 2:可执行文件的 handle (fd)
- 3:Header 在文件中的地址(让动态链接器在内存中读取)
- 4:可执行文件中程序头每个的大小
- 5:entry 数量
- 7:动态链接器本身的装载地址
- 9:可执行文件的入口地址
该数组就放在环境变量指针的后面(32 位)