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

Ján Tomko jtomko at redhat.com
Thu Jun 8 14:21:02 UTC 2017


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170608/7d355f27/attachment-0001.sig>


More information about the libvir-list mailing list