This is the mail archive of the
glibc-linux@ricardo.ecn.wfu.edu
mailing list for the glibc project.
Re: Library mapping
Martin v. Loewis wrote:
>>I'm watching through /proc/<pid>/maps on my Linux 2.4.3 computers that
>>the same program gets its libraries (and their data segments) mapped to
>>different locations on virtual memory. The same OS configuration and
>>libraries are installed on a (1) Pentium 225 and a (2) Pentium III.
>>
>
> When you say "the same", do you mean "the very same", i.e. with no
> differences whatsoever in md5sums of all shared libraries? Including
> ld-linux.so.2?
Yes, as they come out of Mandrake 8.0 distribution.
>
>
>>I'm a compiling the program on (1) and executing on both of them. I'm
>>expecting to see their /proc/<pid>/maps be the same for the same point
>>in the program. But they are not. Might this be because of their
>>hardware differences?
>>
>
> No, it is rather because differences in the environment (in a general
> sense). Things that may contribute:
>
> - exact setting of the enviroment variables (in the strict sense of
> execve)
> - size, contents, and layout of /etc/ld.so.cache
> - path name of each file that is being loaded
> - contents of each directory that is searched when loading shared libraries,
> and exact order of entries returned by getdents(2)
> - value of cwd string
>
I can see that there are many factors out of my control :(
>
>>When a program compiled (non-statically), are the locations where
>>shared objects are mapped known at compile time or are they resolved
>>at load time by ld.so?
>>
>
> They are resolved by ld.so, on a first-come-first-served basis.
>
>
>>Note: I'm doing some low level stuff to overwrite the data segments
>>for libraries after loading.
>>
>
> Then you better use the source, Luke.
That's the best, however, this is required as I should be moving
processes - hence no source code, only when they are running - to
somewhere else and resume (PM stuff). I can actually save the contents
of memory to disk and restart processes from there. Because, they get
mapped to exact same locations, so I can mmap() over them.
Many problems arised when moved to another computer..
>
> Regards,
> Martin
>
>
--
Muzaffer Ozakca
Researcher/Software Engineer - muzaffer.ozakca@bilten.metu.edu.tr
TUBITAK-Bilten-ODTU - Communication Systems and Comp. Networks Group
ODTU, Ankara, Turkey
http://www.bilten.metu.edu.tr/ tel: +90-312-210 1311