Tijl Coosemans tijl@ulyssis.org writes:
It appears that the only solution is to locate wine somewhere after 0x80000000 instead of at 0x7bf00000 and to allow mmap to allocate memory there. Then the data segment size limit can be set to 256Mb or something instead of 32Mb. The problem is then that builtin dlls are mmapped (by the runtime linker) well beyond 0x80000000. Now I'm thinking, would it be possible to load dummy dlls somewhere in the first 2Gb of address space? Through which API calls can a program determine a dll is above 0x80000000 by the way?
It can be any address located in the dll; normally it's the module handle, but it can also be functions or variables. Also there are copy protection tools that check that the dll code is really inside the module, so you can't create a dummy dll and put the real code somewhere else.