[libvirt] [PATCH] virsh: ignore readline -Wstrict-prototypes warning

Roman Bogorodskiy bogorodskiy at gmail.com
Fri May 26 17:49:15 UTC 2017


When building with clang 4.0.0, virsh build fails like this:

gmake[3]: Entering directory '/usr/home/novel/code/libvirt/tools'
  CC       virsh-virsh.o
In file included from virsh.c:45:
In file included from /usr/local/include/readline/readline.h:31:
/usr/local/include/readline/rltypedefs.h:35:22: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
typedef int Function () __attribute__ ((deprecated));
                     ^
                      void
/usr/local/include/readline/rltypedefs.h:36:24: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
typedef void VFunction () __attribute__ ((deprecated));
                       ^
                        void
/usr/local/include/readline/rltypedefs.h:37:26: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
typedef char *CPFunction () __attribute__ ((deprecated));
                         ^
                          void
/usr/local/include/readline/rltypedefs.h:38:28: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
typedef char **CPPFunction () __attribute__ ((deprecated));
                           ^
                            void
In file included from virsh.c:45:
/usr/local/include/readline/readline.h:385:23: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
extern int rl_message ();
                      ^
                       void
5 errors generated.
gmake[3]: *** [Makefile:2823: virsh-virsh.o] Error 1

Fix that by adding VIR_WARNINGS_NO_STRICT_PROTOTYPES macro that uses
"GCC diagnostic push" to ignore -Wstrict-prototypes and wrapping
readline includes with it and VIR_WARNINGS_RESET.

Bug report on the readline mailing list:

 http://lists.gnu.org/archive/html/bug-readline/2017-05/msg00004.html
---
 src/internal.h     | 4 ++++
 tools/virsh.c      | 2 ++
 tools/virt-admin.c | 2 ++
 3 files changed, 8 insertions(+)

diff --git a/src/internal.h b/src/internal.h
index 03a973ccd..57b6da7ff 100644
--- a/src/internal.h
+++ b/src/internal.h
@@ -266,6 +266,10 @@
     _Pragma ("GCC diagnostic push") \
     _Pragma ("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
 
+#  define VIR_WARNINGS_NO_STRICT_PROTOTYPES \
+    _Pragma ("GCC diagnostic push") \
+    _Pragma ("GCC diagnostic ignored \"-Wstrict-prototypes\"")
+
 #  if HAVE_SUGGEST_ATTRIBUTE_FORMAT
 #   define VIR_WARNINGS_NO_PRINTF \
     _Pragma ("GCC diagnostic push") \
diff --git a/tools/virsh.c b/tools/virsh.c
index 1f5c2b11c..1a28a2620 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -41,8 +41,10 @@
 #include <signal.h>
 
 #if WITH_READLINE
+VIR_WARNINGS_NO_STRICT_PROTOTYPES
 # include <readline/readline.h>
 # include <readline/history.h>
+VIR_WARNINGS_RESET
 #endif
 
 #include "internal.h"
diff --git a/tools/virt-admin.c b/tools/virt-admin.c
index 0fa1c000c..7ad4c29e1 100644
--- a/tools/virt-admin.c
+++ b/tools/virt-admin.c
@@ -27,8 +27,10 @@
 #include <getopt.h>
 
 #if WITH_READLINE
+VIR_WARNINGS_NO_STRICT_PROTOTYPES
 # include <readline/readline.h>
 # include <readline/history.h>
+VIR_WARNINGS_RESET
 #endif
 
 #include "internal.h"
-- 
2.13.0




More information about the libvir-list mailing list