如何在ELF中分配可写/可读段?

时间:2014-04-09 20:33:36

标签: c linux elf segment

PT_LOAD类型的一个段,标记PF_write | PF_readp_filesiz = xp_memsiz = x+y它由内核分配p_memsiz,对吗?这种分配实际上如何运作?内核分配p_memsiz并将此块内存的请求放在p_vaddr上,以便该段的写/读内存区域从p_vaddrp_vaddr + p_memsiz?如果是这样,那么在进行分配之前,内核在p_vaddr期望的值(地址)是什么?

1 个答案:

答案 0 :(得分:2)

不完全确定你在问什么,但我可以建议查看动态链接器的源代码ld.so,它实际上加载了ELF对象。

请参阅the source code of _dl_map_object_from_fd ,查看那里的__mmap调用(可重定位对象的一种情况,需要在固定地址加载的对象的一种情况)。这些调用的参数应告诉您有关内存分配方式的所有信息。