From: Alexandre Julliard [mailto:julliard@winehq.org]
The appropriate address needs to be determined from the standard Win64 address space layout. I don't have a Win64 box to check what this looks like though.
Ok, I need some guidance on this. This is the usermode address space layout when running a simple Win64 app:
0000000000010000 - 0000000000011000 commit private
0000000000020000 - 0000000000021000 commit private
0000000000030000 - 000000000012C000 reserve private 000000000012C000 - 000000000012E000 commit private 000000000012E000 - 0000000000130000 commit private stack 0000000000130000 - 0000000000135000 commit mapped
0000000000140000 - 0000000000141000 commit mapped
0000000000150000 - 0000000000156000 commit private process heap
0000000000250000 - 0000000000254000 commit mapped 0000000000254000 - 0000000000260000 reserve mapped 0000000000260000 - 0000000000276000 commit mapped
0000000000280000 - 00000000002B4000 commit mapped
00000000002C0000 - 0000000000301000 commit mapped
0000000000310000 - 0000000000316000 commit mapped
0000000000320000 - 0000000000330000 commit private 0000000000330000 - 0000000000333000 commit mapped
0000000000400000 - 000000000048E000 commit image application
0000000000490000 - 00000000004B1000 commit private 00000000004B1000 - 0000000000590000 reserve private
0000000078D40000 - 0000000078EB2000 commit image kernel32.dll
0000000078EC0000 - 0000000078ff9000 commit image ntdll.dll
000000007EFE0000 - 000000007EFE9000 commit mapped 000000007EFE9000 - 000000007F0E0000 reserve mapped 000000007F0E0000 - 000000007FFE0000 reserve private 000000007FFE0000 - 000000007FFE1000 commit private shared user page 000000007FFE1000 - 000000007FFF0000 reserve private
000007FFFFFB0000 - 000007FFFFFD4000 commit mapped
000007FFFFFDD000 - 000007FFFFFDF000 commit private TEB 000007FFFFFDF000 - 000007FFFFFE0000 commit private PEB 000007FFFFFE0000 - 000007FFFFFF0000 reserve private
Some of the commit/mapped areas contain NLS files. As far as I can tell, the TEB and PEB were moved from just-below-2GB to just-below-7TB, while the shared user page and system DLLs like kernel32 and ntdll were kept at just-below-2GB. I think 0x7bf00400 as relocation address for the Wine loader would work fine. If you'd rather see a different load address or want me to investigate something else please let me know.
Ge van Geldorp.