Determining the memory used by a dynamically loaded shared object
David Daney
ddaney@caviumnetworks.com
Tue Aug 11 11:35:00 GMT 2009
Marcus Clyne wrote:
> David Daney wrote:
>> Marcus Clyne wrote:
>>> Hi David,
>>>
>>> Thanks for your quick reply. Other than forking and exec'ing, is
>>> there an easy way of determining this value within a C program?
>>>
>>
>> You could write code (perhaps using something like libelf) to iterate
>> through all the LOAD Program Headers, and add up their memory sizes.
>>
> I'm not sure how to access the LOAD program headers. Are these
> accessible like normal symbols using dlsym, or could you direct me to a
> webpage where I could read up on it.
>
http://en.wikipedia.org/wiki/Executable_and_Linkable_Format
> Thanks,
>
> Marcus.
>
>>
>>> Thanks,
>>>
>>> Marcus.
>>>
>>>
>>> David Daney wrote:
>>>> Marcus Clyne wrote:
>>>>> Hi,
>>>>>
>>>>> Is there any way to determine the actual memory used by a
>>>>> dynamically loaded (i.e. by dlopen...) shared object. AFAIK this
>>>>> is less than the size of the .so file on disk, but I'm not sure how
>>>>> to calculate it.
>>>>>
>>>>> Can anyone help?
>>>>>
>>>>
>>>> For ELF shared objects, it should be close to the size printed by
>>>> the 'size' command. The dynamic linker may have to allocate a small
>>>> amount of additional memory as part of the linking process.
>>>>
>>>> David Daney
>>>>
>>>
>>>
>>
>>
>
>
More information about the Gcc-help
mailing list