Linux: Fix USE_UCONTEXT detection
authorSimon Wilkinson <sxw@your-file-system.com>
Fri, 1 Apr 2011 15:37:32 +0000 (16:37 +0100)
committerDerrick Brashear <shadow@dementia.org>
Sat, 2 Apr 2011 19:40:27 +0000 (12:40 -0700)
commitf5f0ce525a63264098cd0625769d642fe6f106ba
treeafb10479857bfcf13e7b2b0378c6463e28734c8a
parentba9ae1ed7c269d7c080b5ce99b3b4bb2fe0a2a6f
Linux: Fix USE_UCONTEXT detection

On Linux, afs/param.h determines whether to use the ucontext()
function based on the glibc version. However, the glibc version
macros aren't available until a C library header has been included.

There have been a couple of attempts to fix this. The first included
afs_sysnames.h before the C library check, but this wasn't sufficient
to pull in a header for all builds. The second included stdio.h before
including afs/param.h in process.c.

Whilst the second approach works, it has the drawback that it breaks
our convention that afsconfig.h and afs/param.h must always be the first
includes in a file. More seriously, it means that the behaviour of
afs/param.h is different depending on where it appears in the include
order - which is especially dangerous for 3rd party user.

So, this patch tries to resolve all of this by explicitly including
features.h before doing the glibc version checks. The only danger I
can see here is that Linux platforms without glibc may lack a
features.h, but I suspect we have trouble building on such platforms
in any case.

Change-Id: Ief96d32b10372225335e2d2fbb7205da4bf5fc0a
Reviewed-on: http://gerrit.openafs.org/4389
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
src/config/param.linux24.h
src/config/param.linux26.h
src/lwp/process.c