On Fri, May 27, 2011 at 11:46:27AM +0200, Richard Guenther wrote:
> At SUSE we didn't yet see a need for this kind of macro.  Not sure
> what RedHat uses it for.

To make use of new features backported to older compilers.

E.g. our <sys/cdefs.h> has:
/* GCC 4.3 and above allow passing all anonymous arguments of an
   __extern_always_inline function to some other vararg function.  */
#if __GNUC_PREREQ (4,3) \
    || (defined __GNUC_RH_RELEASE__ && __GNUC__ == 4 \
        && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 2 \
        && __GNUC_RH_RELEASE__ >= 31)
# define __va_arg_pack() __builtin_va_arg_pack ()
# define __va_arg_pack_len() __builtin_va_arg_pack_len ()
#endif

when upstream glibc only has #if __GNUC_PREREQ (4,3).
The above isn't too generic, wouldn't handle 4.1.3-RH nor 4.2-RH,
but there was no 4.2-RH compiler and 4.1.x series stopped at 4.1.2
(4.1.3 prerelease upstream).

        Jakub

Reply via email to