Koji build failure with coreutils-7.5

Roland McGrath roland at redhat.com
Mon Aug 24 08:30:37 UTC 2009


I agree with Jeff here.  Sorry, Jim.  I know life is too complicated to
keep track of, but that's just how it is.  A robustly-written application
really needs to distinguish the build-time vs runtime dependencies it has.
If you want to make an assumption at run time, then you really have to make
sure that they way you were compiled encodes versions requirement that
demand a platform where your assumptions are true.  

The libc stub/not-stub checks at build time do not give you this.  When you
link against a libc that provides a real definition for the foobar syscall,
the foobar symbol has the same symbol version as the older libc that
defined an ENOSYS stub for foobar.  In fact, libc itself may very well be
built so that it works on kernel vintages both with or without foobar, so
that you cannot tell at link time whether foobar will return ENOSYS at
runtime even when using the very same libc.

The bottom line is that a properly portable program has to check for ENOSYS
at runtime now if the function in question has ever existed in a libc
capable of running on a kernel that does not support that system call.


Thanks,
Roland




More information about the fedora-devel-list mailing list