This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Global data loaded if symbols aren't resolved


Ian Lance Taylor wrote:
Marcus Clyne <maccaday@gmail.com> writes:

If a shared object is loaded using dlopen etc and the symbols in its
object aren't used (specifically they are defined elsewhere already
inside that process), is the data in the symbols automatically loaded
into memory or is it skipped (assuming there are no other programs
using those symbols on the system) and the memory available for other
purposes?

If you open a shared library with dlopen, then that library is loaded
into memory. This will use up virtual address space. If you don't use
the library for anything, then the pages will never be loaded into RAM.
When the object loaded initially with dlopen(), is there anything that's transferred to RAM (e.g. the page where the symbol names are), or are they only copied to the swap space directly? If that's the case, are they then loaded into RAM when dlsym() is called?

Thanks,

Marcus.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]