关于section如何构成segment,规范中并无明确指出,所以应该是依赖于链接器的实现。 由于segment与section的分工不同,我不太赞同“segment由属性相同的section构成”这种说法,尽管这样做有它的便利之处。 在 2012年11月6日 下午1:49,horse_rivers <horse_rivers@xxxxxxx>写道: > > > elf文件加载的对象是executable file,以segment为处理单位,即一个segment对应一个内存位置。 > 一个segment由一至多个section构成 > > 这里的segment是属性相同的section? > > 在加载完成后,文件中的逻辑地址会不会再次被修改为加载后的线性地址? > > > > 在 2012-11-06 13:30:56,"Triple Yang" <triple.yang@xxxxxxxxx> 写道: > > elf格式的二进制镜像分为object file和executable file. > > elf文件加载的对象是executable file,以segment为处理单位,即一个segment对应一个内存位置。 > 一个segment由一至多个section构成 > > 在object file中只有section而没有segment。 > 另一方面,executable file中必然有segment,但也允许有section信息 > 直观看起来是,某些数据既属于一个section, 也属于某个segment,或者说,这个section属于该segment. > > 建议你看看elf specs: http://refspecs.freestandards.org/elf/elf.pdf > 以及:http://en.wikipedia.org/wiki/Executable_and_Linkable_Format > > > 在 2012年11月6日 上午9:16,horse_rivers <horse_rivers@xxxxxxx>写道: > >> hi, >> >> 请教一下elf文件加载的相关细节: >> 1.elf加载是不是按照section加载,即每一个section加载到一个内存段中。 >> >> 2.内存中分段管理和section之间有没有关系? >> >> >> 3.elf中的每 一个section有没有加载的地址? >> >> >> 望不吝赐教!祝好! >> >> >> >> > > > -- > 杨勇勇 (Yang Yongyong) > > > > -- 杨勇勇 (Yang Yongyong)