# HG changeset patch # User Paul Eggert # Date 1357236685 28800 # Node ID 66e6219b0ff0996113c243f6dff39a5795802142 # Parent 283c189edcabe96f98be609fde99b025b5fdf254 fwrite: silence __wur only for older glibc versions * lib/stdio.in.h (fwrite): Limit workaround to glibc 2.4 through 2.15. This will help us remove this workaround some time in the far future. diff -r 283c189edcab -r 66e6219b0ff0 ChangeLog --- a/ChangeLog Thu Jan 03 09:51:44 2013 -0700 +++ b/ChangeLog Thu Jan 03 10:11:25 2013 -0800 @@ -1,3 +1,9 @@ +2013-01-03 Paul Eggert + + fwrite: silence __wur only for older glibc versions + * lib/stdio.in.h (fwrite): Limit workaround to glibc 2.4 through 2.15. + This will help us remove this workaround some time in the far future. + 2013-01-03 Eric Blake fwrite: silence __wur without using inline diff -r 283c189edcab -r 66e6219b0ff0 lib/stdio.in.h --- a/lib/stdio.in.h Thu Jan 03 09:51:44 2013 -0700 +++ b/lib/stdio.in.h Thu Jan 03 10:11:25 2013 -0800 @@ -575,13 +575,15 @@ _GL_CXXALIAS_SYS (fwrite, size_t, (const void *ptr, size_t s, size_t n, FILE *stream)); -/* Work around glibc bug 11959 +/* Work around bug 11959 when fortifying glibc 2.4 through 2.15 , which sometimes causes an unwanted diagnostic for fwrite calls. This affects only function declaration attributes under certain versions of gcc, and is not needed for C++. */ -# if !defined __cplusplus && 0 < __USE_FORTIFY_LEVEL \ - && 3 < (__GNUC__ + (4 <= __GNUC_MINOR__)) +# if (0 < __USE_FORTIFY_LEVEL \ + && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \ + && 3 < __GNUC__ + (4 <= __GNUC_MINOR__) \ + && !defined __cplusplus) # undef fwrite # define fwrite(a, b, c, d) ({size_t __r = fwrite (a, b, c, d); __r; }) # endif