[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] libqtest: Avoid inline varargs functions
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [PATCH] libqtest: Avoid inline varargs functions |
Date: |
Thu, 13 Mar 2014 11:31:47 +0000 |
Older versions of gcc (eg 4.6) can't handle varargs functions declared
inline for anything other than completely trivial uses, and complain:
tests/qom-test.c: In function 'qmp': tests/libqtest.h:359:60: sorry,
unimplemented: function 'qmp' can never be inlined because it uses
variable argument lists
Avoid this problem by putting the functions into libqtest.c instead
of using inline definitions in libqtest.h.
Signed-off-by: Peter Maydell <address@hidden>
---
This doesn't bite us with the current libqtest code but the
enhancements Andreas has in his QOM queue do trigger this
gcc 4.6 unimplemented behaviour.
tests/libqtest.c | 20 ++++++++++++++++++++
tests/libqtest.h | 20 ++------------------
2 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/tests/libqtest.c b/tests/libqtest.c
index f587d36..b69dfca 100644
--- a/tests/libqtest.c
+++ b/tests/libqtest.c
@@ -581,3 +581,23 @@ void qtest_memwrite(QTestState *s, uint64_t addr, const
void *data, size_t size)
qtest_sendf(s, "\n");
qtest_rsp(s, 0);
}
+
+QDict *qmp(const char *fmt, ...)
+{
+ va_list ap;
+ QDict *response;
+
+ va_start(ap, fmt);
+ response = qtest_qmpv(global_qtest, fmt, ap);
+ va_end(ap);
+ return response;
+}
+
+void qmp_discard_response(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ qtest_qmpv_discard_response(global_qtest, fmt, ap);
+ va_end(ap);
+}
diff --git a/tests/libqtest.h b/tests/libqtest.h
index 9deebdc..8268c09 100644
--- a/tests/libqtest.h
+++ b/tests/libqtest.h
@@ -356,16 +356,7 @@ static inline void qtest_end(void)
*
* Sends a QMP message to QEMU and returns the response.
*/
-static inline QDict *qmp(const char *fmt, ...)
-{
- va_list ap;
- QDict *response;
-
- va_start(ap, fmt);
- response = qtest_qmpv(global_qtest, fmt, ap);
- va_end(ap);
- return response;
-}
+QDict *qmp(const char *fmt, ...);
/**
* qmp_discard_response:
@@ -373,14 +364,7 @@ static inline QDict *qmp(const char *fmt, ...)
*
* Sends a QMP message to QEMU and consumes the response.
*/
-static inline void qmp_discard_response(const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- qtest_qmpv_discard_response(global_qtest, fmt, ap);
- va_end(ap);
-}
+void qmp_discard_response(const char *fmt, ...);
/**
* get_irq:
--
1.9.0
- [Qemu-devel] [PATCH] libqtest: Avoid inline varargs functions,
Peter Maydell <=