Oops, I meant the subject to be: "Prevent library from being mapped
non-contiguously"

On Sun, 2008-04-27 at 21:01 -0400, Albert Lee wrote:
> Hi,
> 
> I'm trying to fix a problem in Wine that is caused by a shared library
> mapping by the dynamic linker. Wine's memory management facility keeps
> track of where some libraries are mapped and assumes they occupy a
> contiguous range of the process address space.
> 
> However, in some cases they are not contiguous. In the following
> example, there is a 56K "hole" (containing a single page?) between
> sections of a library at 7FFB0000.
> 
> 7FF20000     448K r-x--  /export/ws/wine/dlls/ntdll/ntdll.dll.so
> 7FF90000       4K rw---  /export/ws/wine/dlls/ntdll/ntdll.dll.so
> 7FF91000     120K r-x--  /export/ws/wine/dlls/ntdll/ntdll.dll.so
> 7FFB0000       4K rw--- 
> 7FFBE000      40K rwx--  /export/ws/wine/dlls/ntdll/ntdll.dll.so
> 7FFC8000      72K rwx--  /export/ws/wine/dlls/ntdll/ntdll.dll.so
> 
> The problem is that an mmap after the library is loaded can occupy that
> "hole", which then appears as an overlapping segment to Wine's memory
> management (http://bugs.winehq.org/attachment.cgi?id=12470 ).
> 
> What is responsible for this "hole"? Is there a way to prevent it when
> creating the object file for the library?
> 
> Thanks!
> 
> -Albert
> 


Reply via email to