On Thu, Jun 08, 2017 at 05:20:35PM +0400, Roman Bogorodskiy wrote:
Ján Tomko wrote:On Fri, Jun 02, 2017 at 07:04:23PM +0400, Roman Bogorodskiy wrote: >When building with clang 4.0.0, virsh build fails like this: > [...] > >Bug report on the readline mailing list: > > http://lists.gnu.org/archive/html/bug-readline/2017-05/msg00004.html >--- > configure.ac | 2 +- > m4/virt-readline.m4 | 4 +++- > tools/Makefile.am | 3 ++- > 3 files changed, 6 insertions(+), 3 deletions(-) > >diff --git a/configure.ac b/configure.ac >index 1af5538ee..1a73b3466 100644 >--- a/configure.ac >+++ b/configure.ac >@@ -328,7 +328,7 @@ dnl Availability of various common headers (non-fatal if missing). > AC_CHECK_HEADERS([pwd.h regex.h sys/un.h \ > sys/poll.h syslog.h mntent.h net/ethernet.h linux/magic.h \ > sys/un.h sys/syscall.h sys/sysctl.h netinet/tcp.h ifaddrs.h \ >- libtasn1.h sys/ucred.h sys/mount.h]) >+ libtasn1.h sys/ucred.h sys/mount.h stdarg.h]) > dnl Check whether endian provides handy macros. > AC_CHECK_DECLS([htole64], , , [[#include <endian.h>]]) > AC_CHECK_FUNCS([stat stat64 __xstat __xstat64 lstat lstat64 __lxstat __lxstat64]) What is the purpose of checking for stdarg.h?As the commit message says: "... and add a check for stdarg.h so readline headers use proper rl_message declaration." I thought that's enough details, but obviously it's not as you're asking :-)
I skipped that part of the commit message. I did not expect that other checks would be influenced by this AC_CHECK_HEADERS.
The thing is that there's a following code in readline.h: #if defined (USE_VARARGS) && defined (PREFER_STDARG) extern int rl_message (const char *, ...) __attribute__((__format__ (printf, 1, 2))); #else extern int rl_message (); #endif The latter generates the described warning and the former does not. PREFER_STDARG and USE_VARARGS come from another readline header, rlstdc.h, and it contains the following: #if defined (__STDC__) && defined (HAVE_STDARG_H) # define PREFER_STDARG # define USE_VARARGS #else # if defined (HAVE_VARARGS_H) # define PREFER_VARARGS # define USE_VARARGS # endif #endif So we need to have HAVE_STDARG_H defined to have a proper declaration. How do you like if I rephrase it like "... and add a check for stdarg.h so we have HAVE_STDARG_H defined that's needed by the readline headers to use proper rl_message declaration"?
Yes, that is clear enough even for me :) Jan
Description: Digital signature