On May 12, 2010, at 2:30 PM, Charles Davis wrote:
In Mac OS X 10.5, mmap() was changed to conform to UNIX '03. Among other things, this means that mmap() no longer supports unaligned file offsets (like Linux).
What problems does this cause?
However, by reading Darwin source, I learned that the check for unaligned file offsets is done at the library level, and not in the kernel. This is to support older binaries compiled for Tiger and earlier. This means that Wine compiled for Tiger should support unaligned file offsets, like want. But it also means that, if we make the syscall ourselves instead of calling libc, we can support them on Leopard (and by extension, Snow Leopard) too! This patch series does just that.
Can't we achieve that just by avoiding the mapping of the "mmap" identifier to the _mmap$UNIX2003 symbol?
http://developer.apple.com/mac/library/releasenotes/Darwin/SymbolVariantsRel...
It may be sufficient to #define _NONSTD_SOURCE, #include <sys/mman.h> as the first header, #undef _NONSTD_SOURCE, and then continue to include any other headers.
Alternatively, you can probably use an approach like this:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=028b763f2f51e780841299...
Regards, Ken