Tue May 4 09:08:51 PDT 2021
CVS on FreeBSD -current that seem to be related to the use of BSD make.
In the dlls 'setupapi' and 'version' directories there are source files
called install.c. These confuse the build during a "make install". BSD
make tries to compile and link a program called "install". Renaming the
source files to something other than install.c (such as winstall.c)
allows the build to succeed.
At run time, the error:
"wine: failed to initialize: /something/lib/wine/ntdll.dll.so:
mmap of entire address space failed: Cannot allocate memory"
is caused by Wine attempting to mmap memory outside the user process
address space. I see mmap addr around 0xd8100000 (mostly 0xd81eccd8)
whereas the user address space limit on FreeBSD current is 0xbfc00000
(at least on my system).
This failure is well before any thread library issues are encountered.
I ran a test of mmap on FreeBSD current to see what address space I was
able to mmap. Using objdump to identify the pages that the test program
was linked to load in, the test program was able to mmap MAP_ANON,
MAP_FIXED, MAP_NOCORE all memory from 0x0 to 0xbfc00000, except the
pages at which the test program was mapped at.
I'll look further into how Wine is mmap'ing memory on FreeBSD.
Gerald then wondered where the change needed to be made - Wine or
FreeBSD. John further explained:
More information about the Kernel