Commit 0100f425 authored by Peter Maydell's avatar Peter Maydell
Browse files

libqtest: Avoid inline varargs functions



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: default avatarPeter Maydell <peter.maydell@linaro.org>
Reviewed-by: default avatarAndreas Färber <afaerber@suse.de>
parent 750036a8
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -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);
}
+2 −18
Original line number Diff line number Diff line
@@ -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: