[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH v2] virsh: workaround readline prototypes warnings



  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 :-)

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"?


> ACK with this hunk removed or explained.
> 
> Jan



Roman Bogorodskiy

Attachment: signature.asc
Description: PGP signature


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]