On Thu, 28 Aug 2003, Huw D M Davies wrote:
: It's available on the machine that the binary is compiled on sure, but : what about the machine of a friend/customer who you've shipped the : binary to? Just because you have the new kernel feature on your build : machine doesn't mean that everybody else does. If you test at : run-time you avoid these problems.
Again, this isn't Linux we're talking about. When compiling binaries for most Unix flavors, you state a minimum requirement for running the binary when distributing, based on the version of the OS used to do the compile.
The same goes, say, with features introduced in libc, such as a new function or struct layout with a newly versioned function call. Binaries are only guaranteed to run on an OS at least as new as the compilation environment. (Take Solaris, for instance. If you compile a binary on Solaris 2.5.1, it will likely run on 2.6, 7, 8, and 9, but is not guaranteed to work on 2.5, 2.4, or earlier releases.)
I have a feeling we're just on different mental wavelengths here. MAP_TRYFIXED is not an optional feature. If the #define exists, the feature exists -- for the OS version used to compile, and all later versions.