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