Re: [PATCH] Suppress Clang 3.9 warnings
Noah Misch <noah@leadboat.com>
From: Noah Misch <noah@leadboat.com>
To: Aleksander Alekseev <a.alekseev@postgrespro.ru>
Cc: David Steele <david@pgmasters.net>, PostgreSQL Developers <pgsql-hackers@postgresql.org>
Date: 2017-03-15T02:25:38Z
Lists: pgsql-hackers
On Mon, Mar 13, 2017 at 06:35:53PM +0300, Aleksander Alekseev wrote: > --- a/src/include/port.h > +++ b/src/include/port.h > @@ -395,11 +395,22 @@ extern double rint(double x); > extern int inet_aton(const char *cp, struct in_addr * addr); > #endif > > -#if !HAVE_DECL_STRLCAT > +/* > + * Unfortunately in case of strlcat and strlcpy we can't trust tests > + * executed by Autotools if Clang > 3.6 is used. Clang manages to compile > + * a program that shouldn't compile which causes wrong values of > + * HAVE_DECL_STRLCAT and HAVE_DECL_STRLCPY. More details could be found here: > + * > + * http://lists.llvm.org/pipermail/cfe-dev/2016-March/048126.html > + * > + * This is no doubt a dirty hack but apparently alternative solutions are > + * not much better. > + */ > +#if !HAVE_DECL_STRLCAT || defined(__clang__) > extern size_t strlcat(char *dst, const char *src, size_t siz); > #endif > > -#if !HAVE_DECL_STRLCPY > +#if !HAVE_DECL_STRLCPY || defined(__clang__) > extern size_t strlcpy(char *dst, const char *src, size_t siz); > #endif This is wrong on platforms that do have strlcpy() in libc. If I recall correctly, you can suppress the warnings in your own build by adding "ac_cv_func_strlcpy=no ac_cv_have_decl_strlcpy=no ac_cv_func_strlcat=no ac_cv_have_decl_strlcat=no" to the "configure" command line.
Commits
-
Suppress implicit-conversion warnings seen with newer clang versions.
- 8cfeaecfc76a 10.0 landed
- 8433e0b40e0d 9.6.3 landed
- 16e815279135 9.5.7 landed