[hellogcc] Re: [hellogcc] elf文件加载过程

  • From: Triple Yang <triple.yang@xxxxxxxxx>
  • To: hellogcc@xxxxxxxxxxxxx
  • Date: Tue, 6 Nov 2012 13:52:44 +0800

上述的回答仅适用于静态二进制文件,对于共享目标文件(shared object files)如何处理,我现在不太清楚内部实现细节.
但初看起来的话,共享目标文件中的section信息应该会用于重定向。


在 2012年11月6日 下午1:45,Triple Yang <triple.yang@xxxxxxxxx>写道:

> 所以你的问题答案是:
> 1. elf按照segment而不是section加载,每一个segment有一个虚拟加载地址
> 2. 内存中的分段管理是一种存储资源使用策略,从命名来看,二者是有渊源的,但――没有直接联系
> 3. section header中会为该section给出一个虚拟地址,但这个地址不是用于程序加载的
>
>
> 在 2012年11月6日 下午1:30,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)
>



-- 
杨勇勇 (Yang Yongyong)

Other related posts: