In general, the Solaris large file support is implemented as: If 64 bit: define structs/functions without 64 alias (these are the actual names that are linked) alias *64 suffix to actual function names else: if USING_LARGEFILES: define *64 function/structs alias regular functions to *64 variants else define non-64 suffixed functions/structs The D definitions currently do the 32-bit large file behavior in 64-bit environments, causing it to attempt to link to the *64 suffixed function names, which fails (since they only exist in the 32-bit libc). The definitions should match what the Solaris header files do.
https://github.com/D-Programming-Language/druntime/pull/859