Re: [HACKERS] [PATCH] Suppress Clang 3.9 warnings - Mailing list pgsql-hackers

From Noah Misch
Subject Re: [HACKERS] [PATCH] Suppress Clang 3.9 warnings
Date
Msg-id 20170315022538.GA1723554@tornado.leadboat.com
Whole thread Raw
In response to Re: [HACKERS] [PATCH] Suppress Clang 3.9 warnings  (Aleksander Alekseev <a.alekseev@postgrespro.ru>)
Responses Re: [HACKERS] [PATCH] Suppress Clang 3.9 warnings
Re: [HACKERS] [PATCH] Suppress Clang 3.9 warnings
List 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.



pgsql-hackers by date:

Previous
From: Amit Kapila
Date:
Subject: [HACKERS] Remove obsolete text from hash/README
Next
From: Amit Kapila
Date:
Subject: Re: [HACKERS] Write Ahead Logging for Hash Indexes