PT_LOAD
类型的一个段,标记PF_write | PF_read
,p_filesiz = x
和p_memsiz = x+y
它由内核分配p_memsiz
,对吗?这种分配实际上如何运作?内核分配p_memsiz
并将此块内存的请求放在p_vaddr
上,以便该段的写/读内存区域从p_vaddr
到p_vaddr + p_memsiz
?如果是这样,那么在进行分配之前,内核在p_vaddr
期望的值(地址)是什么?
答案 0 :(得分:2)
不完全确定你在问什么,但我可以建议查看动态链接器的源代码ld.so,它实际上加载了ELF对象。
请参阅the source code of _dl_map_object_from_fd ,查看那里的__mmap
调用(可重定位对象的一种情况,需要在固定地址加载的对象的一种情况)。这些调用的参数应告诉您有关内存分配方式的所有信息。