Siddhesh Poyarekar, le lun. 01 mai 2023 12:15:04 -0400, a ecrit: > > > On 2023-04-29 11:06, Samuel Thibault via Libc-alpha wrote: > > It looks sensible to me indeed, any opinion from somebody else? > > > > > > > > > > Sergey Bugaev, le sam. 29 avril 2023 16:12:23 +0300, a ecrit: > > > GCC docs explicitly list perror () as a good candidate for using > > > __attribute__ ((cold)). So apply __COLD to perror () and similar > > > functions. > > > > > > Signed-off-by: Sergey Bugaev <buga...@gmail.com> > > LGTM. It would be nice to do a build-many-glibcs run here since it > touches public headers
Yes, I ran i686-gnu, x86_64-gnu and x86_64-linux-gnu. > but the change itself looks fairly straightforward and should > be fine for all compilers. Applied, thanks! > Reviewed-by: Siddhesh Poyarekar <siddh...@sourceware.org> > > > > --- > > > include/error.h | 4 ++-- > > > libio/stdio.h | 2 +- > > > misc/err.h | 12 ++++++------ > > > misc/error.h | 4 ++-- > > > 4 files changed, 11 insertions(+), 11 deletions(-) > > > > > > diff --git a/include/error.h b/include/error.h > > > index 9e96262f..4db67cba 100644 > > > --- a/include/error.h > > > +++ b/include/error.h > > > @@ -5,11 +5,11 @@ > > > void > > > __error_internal (int status, int errnum, const char *message, > > > - va_list args, unsigned int mode_flags); > > > + va_list args, unsigned int mode_flags) __COLD; > > > void > > > __error_at_line_internal (int status, int errnum, const char *file_name, > > > unsigned int line_number, const char *message, > > > - va_list args, unsigned int mode_flags); > > > + va_list args, unsigned int mode_flags) __COLD; > > > #endif > > > diff --git a/libio/stdio.h b/libio/stdio.h > > > index 45ddafdf..2387590d 100644 > > > --- a/libio/stdio.h > > > +++ b/libio/stdio.h > > > @@ -859,7 +859,7 @@ extern int ferror_unlocked (FILE *__stream) __THROW > > > __wur; > > > This function is a possible cancellation point and therefore not > > > marked with __THROW. */ > > > -extern void perror (const char *__s); > > > +extern void perror (const char *__s) __COLD; > > > #ifdef __USE_POSIX > > > diff --git a/misc/err.h b/misc/err.h > > > index 0c752465..43df3a57 100644 > > > --- a/misc/err.h > > > +++ b/misc/err.h > > > @@ -32,9 +32,9 @@ __BEGIN_DECLS > > > /* Print "program: ", FORMAT, ": ", the standard error string for errno, > > > and a newline, on stderr. */ > > > extern void warn (const char *__format, ...) > > > - __attribute__ ((__format__ (__printf__, 1, 2))); > > > + __attribute__ ((__format__ (__printf__, 1, 2))) __COLD; > > > extern void vwarn (const char *__format, __gnuc_va_list) > > > - __attribute__ ((__format__ (__printf__, 1, 0))); > > > + __attribute__ ((__format__ (__printf__, 1, 0))) __COLD; > > > /* Likewise, but without ": " and the standard error string. */ > > > extern void warnx (const char *__format, ...) > > > @@ -44,13 +44,13 @@ extern void vwarnx (const char *__format, > > > __gnuc_va_list) > > > /* Likewise, and then exit with STATUS. */ > > > extern void err (int __status, const char *__format, ...) > > > - __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3))); > > > + __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3))) > > > __COLD; > > > extern void verr (int __status, const char *__format, __gnuc_va_list) > > > - __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0))); > > > + __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0))) > > > __COLD; > > > extern void errx (int __status, const char *__format, ...) > > > - __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3))); > > > + __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3))) > > > __COLD; > > > extern void verrx (int __status, const char *, __gnuc_va_list) > > > - __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0))); > > > + __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0))) > > > __COLD; > > > #include <bits/floatn.h> > > > #if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1 > > > diff --git a/misc/error.h b/misc/error.h > > > index 185b39c6..4fbd46c7 100644 > > > --- a/misc/error.h > > > +++ b/misc/error.h > > > @@ -29,11 +29,11 @@ __BEGIN_DECLS > > > If STATUS is nonzero, terminate the program with `exit (STATUS)'. */ > > > extern void error (int __status, int __errnum, const char *__format, > > > ...) > > > - __attribute__ ((__format__ (__printf__, 3, 4))); > > > + __attribute__ ((__format__ (__printf__, 3, 4))) __COLD; > > > extern void error_at_line (int __status, int __errnum, const char > > > *__fname, > > > unsigned int __lineno, const char *__format, > > > ...) > > > - __attribute__ ((__format__ (__printf__, 5, 6))); > > > + __attribute__ ((__format__ (__printf__, 5, 6))) __COLD; > > > /* If NULL, error will flush stdout, then print on stderr the program > > > name, a colon and a space. Otherwise, error will call this > > > -- > > > 2.40.1 > > > > > > -- Samuel --- Pour une évaluation indépendante, transparente et rigoureuse ! Je soutiens la Commission d'Évaluation de l'Inria.