* [Qemu-devel] [PATCH 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED @ 2017-02-21 10:42 Paolo Bonzini 2017-02-21 10:42 ` [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr Paolo Bonzini ` (5 more replies) 0 siblings, 6 replies; 22+ messages in thread From: Paolo Bonzini @ 2017-02-21 10:42 UTC (permalink / raw) To: qemu-devel; +Cc: eblake, anton.nefedov, den This is an alternative approach to simplifying the crash information patches. Currently, crash information is exposed twice, through a QOM property and through a method. This is because accessing QOM properties with QAPI struct types is a huge pain in the neck. Patch 1 fixes this by providing a simple and well-tested API, that takes care of integrating the QOM->QObject->QAPI steps into a single function. Patch 2 then eliminates the get_crash_info method. Patch 3 finally cleans up qemu_system_guest_panicked by passing a CPUState* argument instead of a GuestPanicInformation struct. Paolo Paolo Bonzini (3): qom-qobject: introduce object_property_{g,s}et_ptr cpu: implement get_crash_info through QOM properties vl: pass CPUState to qemu_system_guest_panicked include/qom/cpu.h | 1 - include/qom/qom-qobject.h | 68 ++++++++++++ include/sysemu/sysemu.h | 2 +- kvm-all.c | 2 +- qom/cpu.c | 11 +- qom/qom-qobject.c | 49 +++++++++ target/i386/cpu.c | 2 +- tests/Makefile.include | 2 +- tests/check-qom-proplist.c | 185 +++++++++++++++++++++++++++++++- tests/qapi-schema/qapi-schema-test.json | 8 ++ vl.c | 13 ++- 11 files changed, 326 insertions(+), 17 deletions(-) -- 2.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr 2017-02-21 10:42 [Qemu-devel] [PATCH 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED Paolo Bonzini @ 2017-02-21 10:42 ` Paolo Bonzini 2017-02-21 11:56 ` Paolo Bonzini 2017-02-21 15:57 ` Eric Blake 2017-02-21 10:42 ` [Qemu-devel] [PATCH 2/3] cpu: implement get_crash_info through QOM properties Paolo Bonzini ` (4 subsequent siblings) 5 siblings, 2 replies; 22+ messages in thread From: Paolo Bonzini @ 2017-02-21 10:42 UTC (permalink / raw) To: qemu-devel; +Cc: eblake, anton.nefedov, den The functions simplify the handling of QOM properties whose type is a QAPI struct. They go through a QObject just like the other functions that access a QOM property through its C type. Like QAPI_CLONE, the functions are wrapped by macros that take a QAPI type name and use it to build the name of a visitor function. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- include/qom/qom-qobject.h | 68 ++++++++++++ qom/qom-qobject.c | 49 +++++++++ tests/Makefile.include | 2 +- tests/check-qom-proplist.c | 185 +++++++++++++++++++++++++++++++- tests/qapi-schema/qapi-schema-test.json | 8 ++ 5 files changed, 309 insertions(+), 3 deletions(-) diff --git a/include/qom/qom-qobject.h b/include/qom/qom-qobject.h index 77cd717..ff1d307 100644 --- a/include/qom/qom-qobject.h +++ b/include/qom/qom-qobject.h @@ -39,4 +39,72 @@ struct QObject *object_property_get_qobject(Object *obj, const char *name, void object_property_set_qobject(Object *obj, struct QObject *qobj, const char *name, struct Error **errp); +/** + * object_property_get_ptr: + * @obj: the object + * @ptr: The C struct that will be written to the property. + * @name: the name of the property + * @visit_type: the visitor function for @ptr's type. + * @errp: returns an error if this function fails + * + * Return: the value of an object's property, unmarshaled into a C object + * through a QAPI type visitor, or NULL if an error occurs. + */ +void *object_property_get_ptr(Object *obj, const char *name, + void (*visit_type)(Visitor *, const char *, + void **, Error **), + Error **errp); + +/** + * OBJECT_PROPERTY_GET_PTR: + * @obj: the object + * @ptr: The C struct that will be written to the property. + * @name: the name of the property + * @type: the name of the C struct type pointed to by @ptr. + * @errp: returns an error if this function fails + * + * Return: the value of an object's property, unmarshaled into a C object + * through a QAPI type visitor, or NULL if an error occurs. + */ +#define OBJECT_PROPERTY_GET_PTR(obj, name, type, errp) \ + ((type *) \ + object_property_get_ptr(obj, name, \ + (void (*)(Visitor *, const char *, void**, \ + Error **))visit_type_ ## type, \ + errp)) + +/** + * object_property_set_ptr: + * @obj: the object + * @ptr: The C struct that will be written to the property. + * @name: the name of the property + * @visit_type: the visitor function for @ptr's type. + * @errp: returns an error if this function fails + * + * Sets an object's property to a C object's value, using a QAPI + * type visitor to marshal the C struct into the object. + */ +void object_property_set_ptr(Object *obj, void *ptr, const char *name, + void (*visit_type)(Visitor *, const char *, + void **, Error **), + Error **errp); + +/** + * OBJECT_PROPERTY_SET_PTR: + * @obj: the object + * @ptr: The C struct that will be written to the property. + * @name: the name of the property + * @type: the name of the C struct type pointed to by @ptr. + * @errp: returns an error if this function fails + * + * Sets an object's property to a C object's value, using a QAPI + * type visitor to marshal the C struct into the object. + */ +#define OBJECT_PROPERTY_SET_PTR(obj, ptr, name, type, errp) \ + object_property_set_ptr(obj, ptr + type_check(type, typeof(*ptr)), \ + name, \ + (void (*)(Visitor *, const char *, void**, \ + Error **))visit_type_ ## type, \ + errp) + #endif diff --git a/qom/qom-qobject.c b/qom/qom-qobject.c index 447e4a0..09a12e0 100644 --- a/qom/qom-qobject.c +++ b/qom/qom-qobject.c @@ -44,3 +44,52 @@ QObject *object_property_get_qobject(Object *obj, const char *name, visit_free(v); return ret; } + +void object_property_set_ptr(Object *obj, void *ptr, const char *name, + void (*visit_type)(Visitor *, const char *, void **, Error **), + Error **errp) +{ + Error *local_err = NULL; + QObject *ret = NULL; + Visitor *v; + v = qobject_output_visitor_new(&ret); + visit_type(v, name, &ptr, &local_err); + if (local_err) { + error_propagate(errp, local_err); + visit_free(v); + return; + } + visit_complete(v, &ret); + visit_free(v); + + /* Do not use object_property_set_qobject until we switch it + * to use qobject_input_visitor_new in strict mode. See the + * /qom/proplist/get-set-ptr/contravariant unit test. + */ + v = qobject_input_visitor_new(ret, true); + object_property_set(obj, v, name, errp); + visit_free(v); + qobject_decref(ret); +} + +void *object_property_get_ptr(Object *obj, const char *name, + void (*visit_type)(Visitor *, const char *, void **, Error **), + Error **errp) +{ + QObject *ret; + Visitor *v; + void *ptr = NULL; + + ret = object_property_get_qobject(obj, name, errp); + if (!ret) { + return NULL; + } + + /* Do not enable strict mode to allow passing covariant + * data types. + */ + v = qobject_input_visitor_new(ret, false); + visit_type(v, name, &ptr, errp); + qobject_decref(ret); + return ptr; +} diff --git a/tests/Makefile.include b/tests/Makefile.include index 634394a..9de910b 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -515,7 +515,7 @@ tests/check-qfloat$(EXESUF): tests/check-qfloat.o $(test-util-obj-y) tests/check-qnull$(EXESUF): tests/check-qnull.o $(test-util-obj-y) tests/check-qjson$(EXESUF): tests/check-qjson.o $(test-util-obj-y) tests/check-qom-interface$(EXESUF): tests/check-qom-interface.o $(test-qom-obj-y) -tests/check-qom-proplist$(EXESUF): tests/check-qom-proplist.o $(test-qom-obj-y) +tests/check-qom-proplist$(EXESUF): tests/check-qom-proplist.o $(test-qom-obj-y) $(test-qapi-obj-y) tests/test-char$(EXESUF): tests/test-char.o qemu-timer.o \ $(test-util-obj-y) $(qtest-obj-y) $(test-block-obj-y) $(chardev-obj-y) diff --git a/tests/check-qom-proplist.c b/tests/check-qom-proplist.c index a16cefc..e0ad880 100644 --- a/tests/check-qom-proplist.c +++ b/tests/check-qom-proplist.c @@ -22,8 +22,11 @@ #include "qapi/error.h" #include "qom/object.h" +#include "qom/qom-qobject.h" #include "qemu/module.h" +#include "test-qapi-types.h" +#include "test-qapi-visit.h" #define TYPE_DUMMY "qemu-dummy" @@ -56,6 +59,8 @@ struct DummyObject { bool bv; DummyAnimal av; char *sv; + + UserDefOne *qv; }; struct DummyObjectClass { @@ -120,12 +125,42 @@ static char *dummy_get_sv(Object *obj, static void dummy_init(Object *obj) { + DummyObject *dobj = DUMMY_OBJECT(obj); + object_property_add_bool(obj, "bv", dummy_get_bv, dummy_set_bv, NULL); + dobj->qv = g_new0(UserDefOne, 1); + dobj->qv->string = g_strdup("dummy string"); +} + + +static void dummy_get_qv(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + DummyObject *dobj = DUMMY_OBJECT(obj); + + visit_type_UserDefOne(v, name, &dobj->qv, errp); } +static void dummy_set_qv(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + DummyObject *dobj = DUMMY_OBJECT(obj); + UserDefOne *qv = NULL; + Error *local_err = NULL; + + visit_type_UserDefOne(v, name, &qv, &local_err); + if (local_err) { + g_assert(qv == NULL); + error_propagate(errp, local_err); + return; + } + + qapi_free_UserDefOne(dobj->qv); + dobj->qv = qv; +} static void dummy_class_init(ObjectClass *cls, void *data) { @@ -143,6 +178,13 @@ static void dummy_class_init(ObjectClass *cls, void *data) dummy_get_av, dummy_set_av, NULL); + object_class_property_add(cls, "qv", + "UserDefOne", + dummy_get_qv, + dummy_set_qv, + NULL, + NULL, + NULL); } @@ -151,9 +193,9 @@ static void dummy_finalize(Object *obj) DummyObject *dobj = DUMMY_OBJECT(obj); g_free(dobj->sv); + qapi_free_UserDefOne(dobj->qv); } - static const TypeInfo dummy_info = { .name = TYPE_DUMMY, .parent = TYPE_OBJECT, @@ -473,7 +515,8 @@ static void test_dummy_iterator(void) ObjectProperty *prop; ObjectPropertyIterator iter; - bool seenbv = false, seensv = false, seenav = false, seentype; + bool seenbv = false, seensv = false, seenav = false; + bool seenqv = false, seentype = false; object_property_iter_init(&iter, OBJECT(dobj)); while ((prop = object_property_iter_next(&iter))) { @@ -483,6 +526,8 @@ static void test_dummy_iterator(void) seensv = true; } else if (g_str_equal(prop->name, "av")) { seenav = true; + } else if (g_str_equal(prop->name, "qv")) { + seenqv = true; } else if (g_str_equal(prop->name, "type")) { /* This prop comes from the base Object class */ seentype = true; @@ -494,6 +539,7 @@ static void test_dummy_iterator(void) g_assert(seenbv); g_assert(seenav); g_assert(seensv); + g_assert(seenqv); g_assert(seentype); object_unparent(OBJECT(dobj)); @@ -513,6 +559,137 @@ static void test_dummy_delchild(void) object_unparent(OBJECT(dev)); } +static void test_dummy_get_set_ptr_struct(void) +{ + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); + Error *local_err = NULL; + const char *s = "my other dummy string"; + UserDefOne *ret; + UserDefOne val; + + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", + UserDefOne, &local_err); + g_assert(!local_err); + + g_assert_cmpint(ret->integer, ==, 0); + g_assert_cmpstr(ret->string, ==, "dummy string"); + g_assert(!ret->has_enum1); + qapi_free_UserDefOne(ret); + + val.integer = 42; + val.string = g_strdup(s); + val.has_enum1 = true; + val.enum1 = ENUM_ONE_VALUE1; + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", + UserDefOne, &local_err); + g_assert(!local_err); + + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", + UserDefOne, &local_err); + g_assert(!local_err); + + g_assert_cmpint(ret->integer, ==, val.integer); + g_assert_cmpstr(ret->string, ==, val.string); + g_assert(ret->has_enum1); + g_assert_cmpint(ret->enum1, ==, val.enum1); + g_free(val.string); + qapi_free_UserDefOne(ret); +} + +static void test_dummy_get_set_ptr_contravariant(void) +{ + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); + Error *local_err = NULL; + UserDefOneMore *ret; + UserDefOneMore val; + + /* You cannot retrieve a contravariant (subclass) type... */ + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", + UserDefOneMore, &local_err); + g_assert(local_err); + g_assert(!ret); + error_free(local_err); + local_err = NULL; + + /* And you cannot set one either. */ + val.integer = 42; + val.string = g_strdup("unused"); + val.has_enum1 = false; + val.boolean = false; + + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", + UserDefOneMore, &local_err); + g_assert(local_err); +} + +static void test_dummy_get_set_ptr_covariant(void) +{ + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); + Error *local_err = NULL; + UserDefZero *ret; + UserDefZero val; + + /* You can retrieve a covariant (superclass) type... */ + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", + UserDefZero, &local_err); + g_assert(!local_err); + + g_assert_cmpint(ret->integer, ==, 0); + qapi_free_UserDefZero(ret); + + /* But you cannot set one. */ + val.integer = 42; + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", + UserDefZero, &local_err); + g_assert(local_err); + error_free(local_err); + local_err = NULL; + + /* Test that the property has not been modified at all */ + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", + UserDefZero, &local_err); + g_assert(!local_err); + + g_assert_cmpint(ret->integer, ==, 0); + qapi_free_UserDefZero(ret); +} + +static void test_dummy_get_set_ptr_error(void) +{ + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); + Error *local_err = NULL; + const char *s = "my other dummy string"; + UserDefOne *ret; + UserDefOne val; + + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "blah", + UserDefOne, &local_err); + g_assert(local_err); + g_assert(!ret); + error_free(local_err); + local_err = NULL; + + val.integer = 42; + val.string = g_strdup(s); + val.has_enum1 = true; + val.enum1 = 100; + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", + UserDefOne, &local_err); + g_assert(local_err); + error_free(local_err); + local_err = NULL; + + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", + UserDefOne, &local_err); + g_assert(!local_err); + + /* Test that the property has not been modified at all */ + g_assert_cmpint(ret->integer, ==, 0); + g_assert_cmpstr(ret->string, ==, "dummy string"); + g_assert(!ret->has_enum1); + qapi_free_UserDefOne(ret); +} + int main(int argc, char **argv) { g_test_init(&argc, &argv, NULL); @@ -530,5 +707,9 @@ int main(int argc, char **argv) g_test_add_func("/qom/proplist/iterator", test_dummy_iterator); g_test_add_func("/qom/proplist/delchild", test_dummy_delchild); + g_test_add_func("/qom/proplist/get-set-ptr/struct", test_dummy_get_set_ptr_struct); + g_test_add_func("/qom/proplist/get-set-ptr/error", test_dummy_get_set_ptr_error); + g_test_add_func("/qom/proplist/get-set-ptr/covariant", test_dummy_get_set_ptr_covariant); + g_test_add_func("/qom/proplist/get-set-ptr/contravariant", test_dummy_get_set_ptr_contravariant); return g_test_run(); } diff --git a/tests/qapi-schema/qapi-schema-test.json b/tests/qapi-schema/qapi-schema-test.json index f4d8cc4..4e3f6ff 100644 --- a/tests/qapi-schema/qapi-schema-test.json +++ b/tests/qapi-schema/qapi-schema-test.json @@ -91,6 +91,14 @@ '*enum1': 'EnumOne' } } # intentional forward reference ## +# @UserDefOneMore: +# for testing nested structs +## +{ 'struct': 'UserDefOneMore', + 'base': 'UserDefOne', + 'data': { 'boolean': 'bool' } } + +## # @EnumOne: ## { 'enum': 'EnumOne', -- 2.9.3 ^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr 2017-02-21 10:42 ` [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr Paolo Bonzini @ 2017-02-21 11:56 ` Paolo Bonzini 2017-02-21 16:36 ` Marc-André Lureau 2017-02-21 15:57 ` Eric Blake 1 sibling, 1 reply; 22+ messages in thread From: Paolo Bonzini @ 2017-02-21 11:56 UTC (permalink / raw) To: qemu-devel; +Cc: den, anton.nefedov On 21/02/2017 11:42, Paolo Bonzini wrote: > The functions simplify the handling of QOM properties whose type > is a QAPI struct. They go through a QObject just like the other > functions that access a QOM property through its C type. > > Like QAPI_CLONE, the functions are wrapped by macros that take a > QAPI type name and use it to build the name of a visitor function. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > include/qom/qom-qobject.h | 68 ++++++++++++ > qom/qom-qobject.c | 49 +++++++++ > tests/Makefile.include | 2 +- > tests/check-qom-proplist.c | 185 +++++++++++++++++++++++++++++++- > tests/qapi-schema/qapi-schema-test.json | 8 ++ > 5 files changed, 309 insertions(+), 3 deletions(-) Missing hunk: diff --git a/tests/qapi-schema/qapi-schema-test.out b/tests/qapi-schema/qapi-schema-test.out index bc8d496..d3a2990 100644 --- a/tests/qapi-schema/qapi-schema-test.out +++ b/tests/qapi-schema/qapi-schema-test.out @@ -107,6 +107,9 @@ object UserDefOne base UserDefZero member string: str optional=False member enum1: EnumOne optional=True +object UserDefOneMore + base UserDefOne + member boolean: bool optional=False object UserDefOptions member i64: intList optional=True member u64: uint64List optional=True @@ -283,6 +286,9 @@ for testing override of default naming heuristic doc symbol=UserDefOne expr=('struct', 'UserDefOne') body= for testing nested structs +doc symbol=UserDefOneMore expr=('struct', 'UserDefOneMore') + body= +for testing nested structs doc symbol=EnumOne expr=('enum', 'EnumOne') doc symbol=UserDefZero expr=('struct', 'UserDefZero') doc symbol=UserDefTwoDictDict expr=('struct', 'UserDefTwoDictDict') Paolo > diff --git a/include/qom/qom-qobject.h b/include/qom/qom-qobject.h > index 77cd717..ff1d307 100644 > --- a/include/qom/qom-qobject.h > +++ b/include/qom/qom-qobject.h > @@ -39,4 +39,72 @@ struct QObject *object_property_get_qobject(Object *obj, const char *name, > void object_property_set_qobject(Object *obj, struct QObject *qobj, > const char *name, struct Error **errp); > > +/** > + * object_property_get_ptr: > + * @obj: the object > + * @ptr: The C struct that will be written to the property. > + * @name: the name of the property > + * @visit_type: the visitor function for @ptr's type. > + * @errp: returns an error if this function fails > + * > + * Return: the value of an object's property, unmarshaled into a C object > + * through a QAPI type visitor, or NULL if an error occurs. > + */ > +void *object_property_get_ptr(Object *obj, const char *name, > + void (*visit_type)(Visitor *, const char *, > + void **, Error **), > + Error **errp); > + > +/** > + * OBJECT_PROPERTY_GET_PTR: > + * @obj: the object > + * @ptr: The C struct that will be written to the property. > + * @name: the name of the property > + * @type: the name of the C struct type pointed to by @ptr. > + * @errp: returns an error if this function fails > + * > + * Return: the value of an object's property, unmarshaled into a C object > + * through a QAPI type visitor, or NULL if an error occurs. > + */ > +#define OBJECT_PROPERTY_GET_PTR(obj, name, type, errp) \ > + ((type *) \ > + object_property_get_ptr(obj, name, \ > + (void (*)(Visitor *, const char *, void**, \ > + Error **))visit_type_ ## type, \ > + errp)) > + > +/** > + * object_property_set_ptr: > + * @obj: the object > + * @ptr: The C struct that will be written to the property. > + * @name: the name of the property > + * @visit_type: the visitor function for @ptr's type. > + * @errp: returns an error if this function fails > + * > + * Sets an object's property to a C object's value, using a QAPI > + * type visitor to marshal the C struct into the object. > + */ > +void object_property_set_ptr(Object *obj, void *ptr, const char *name, > + void (*visit_type)(Visitor *, const char *, > + void **, Error **), > + Error **errp); > + > +/** > + * OBJECT_PROPERTY_SET_PTR: > + * @obj: the object > + * @ptr: The C struct that will be written to the property. > + * @name: the name of the property > + * @type: the name of the C struct type pointed to by @ptr. > + * @errp: returns an error if this function fails > + * > + * Sets an object's property to a C object's value, using a QAPI > + * type visitor to marshal the C struct into the object. > + */ > +#define OBJECT_PROPERTY_SET_PTR(obj, ptr, name, type, errp) \ > + object_property_set_ptr(obj, ptr + type_check(type, typeof(*ptr)), \ > + name, \ > + (void (*)(Visitor *, const char *, void**, \ > + Error **))visit_type_ ## type, \ > + errp) > + > #endif > diff --git a/qom/qom-qobject.c b/qom/qom-qobject.c > index 447e4a0..09a12e0 100644 > --- a/qom/qom-qobject.c > +++ b/qom/qom-qobject.c > @@ -44,3 +44,52 @@ QObject *object_property_get_qobject(Object *obj, const char *name, > visit_free(v); > return ret; > } > + > +void object_property_set_ptr(Object *obj, void *ptr, const char *name, > + void (*visit_type)(Visitor *, const char *, void **, Error **), > + Error **errp) > +{ > + Error *local_err = NULL; > + QObject *ret = NULL; > + Visitor *v; > + v = qobject_output_visitor_new(&ret); > + visit_type(v, name, &ptr, &local_err); > + if (local_err) { > + error_propagate(errp, local_err); > + visit_free(v); > + return; > + } > + visit_complete(v, &ret); > + visit_free(v); > + > + /* Do not use object_property_set_qobject until we switch it > + * to use qobject_input_visitor_new in strict mode. See the > + * /qom/proplist/get-set-ptr/contravariant unit test. > + */ > + v = qobject_input_visitor_new(ret, true); > + object_property_set(obj, v, name, errp); > + visit_free(v); > + qobject_decref(ret); > +} > + > +void *object_property_get_ptr(Object *obj, const char *name, > + void (*visit_type)(Visitor *, const char *, void **, Error **), > + Error **errp) > +{ > + QObject *ret; > + Visitor *v; > + void *ptr = NULL; > + > + ret = object_property_get_qobject(obj, name, errp); > + if (!ret) { > + return NULL; > + } > + > + /* Do not enable strict mode to allow passing covariant > + * data types. > + */ > + v = qobject_input_visitor_new(ret, false); > + visit_type(v, name, &ptr, errp); > + qobject_decref(ret); > + return ptr; > +} > diff --git a/tests/Makefile.include b/tests/Makefile.include > index 634394a..9de910b 100644 > --- a/tests/Makefile.include > +++ b/tests/Makefile.include > @@ -515,7 +515,7 @@ tests/check-qfloat$(EXESUF): tests/check-qfloat.o $(test-util-obj-y) > tests/check-qnull$(EXESUF): tests/check-qnull.o $(test-util-obj-y) > tests/check-qjson$(EXESUF): tests/check-qjson.o $(test-util-obj-y) > tests/check-qom-interface$(EXESUF): tests/check-qom-interface.o $(test-qom-obj-y) > -tests/check-qom-proplist$(EXESUF): tests/check-qom-proplist.o $(test-qom-obj-y) > +tests/check-qom-proplist$(EXESUF): tests/check-qom-proplist.o $(test-qom-obj-y) $(test-qapi-obj-y) > > tests/test-char$(EXESUF): tests/test-char.o qemu-timer.o \ > $(test-util-obj-y) $(qtest-obj-y) $(test-block-obj-y) $(chardev-obj-y) > diff --git a/tests/check-qom-proplist.c b/tests/check-qom-proplist.c > index a16cefc..e0ad880 100644 > --- a/tests/check-qom-proplist.c > +++ b/tests/check-qom-proplist.c > @@ -22,8 +22,11 @@ > > #include "qapi/error.h" > #include "qom/object.h" > +#include "qom/qom-qobject.h" > #include "qemu/module.h" > > +#include "test-qapi-types.h" > +#include "test-qapi-visit.h" > > #define TYPE_DUMMY "qemu-dummy" > > @@ -56,6 +59,8 @@ struct DummyObject { > bool bv; > DummyAnimal av; > char *sv; > + > + UserDefOne *qv; > }; > > struct DummyObjectClass { > @@ -120,12 +125,42 @@ static char *dummy_get_sv(Object *obj, > > static void dummy_init(Object *obj) > { > + DummyObject *dobj = DUMMY_OBJECT(obj); > + > object_property_add_bool(obj, "bv", > dummy_get_bv, > dummy_set_bv, > NULL); > + dobj->qv = g_new0(UserDefOne, 1); > + dobj->qv->string = g_strdup("dummy string"); > +} > + > + > +static void dummy_get_qv(Object *obj, Visitor *v, const char *name, > + void *opaque, Error **errp) > +{ > + DummyObject *dobj = DUMMY_OBJECT(obj); > + > + visit_type_UserDefOne(v, name, &dobj->qv, errp); > } > > +static void dummy_set_qv(Object *obj, Visitor *v, const char *name, > + void *opaque, Error **errp) > +{ > + DummyObject *dobj = DUMMY_OBJECT(obj); > + UserDefOne *qv = NULL; > + Error *local_err = NULL; > + > + visit_type_UserDefOne(v, name, &qv, &local_err); > + if (local_err) { > + g_assert(qv == NULL); > + error_propagate(errp, local_err); > + return; > + } > + > + qapi_free_UserDefOne(dobj->qv); > + dobj->qv = qv; > +} > > static void dummy_class_init(ObjectClass *cls, void *data) > { > @@ -143,6 +178,13 @@ static void dummy_class_init(ObjectClass *cls, void *data) > dummy_get_av, > dummy_set_av, > NULL); > + object_class_property_add(cls, "qv", > + "UserDefOne", > + dummy_get_qv, > + dummy_set_qv, > + NULL, > + NULL, > + NULL); > } > > > @@ -151,9 +193,9 @@ static void dummy_finalize(Object *obj) > DummyObject *dobj = DUMMY_OBJECT(obj); > > g_free(dobj->sv); > + qapi_free_UserDefOne(dobj->qv); > } > > - > static const TypeInfo dummy_info = { > .name = TYPE_DUMMY, > .parent = TYPE_OBJECT, > @@ -473,7 +515,8 @@ static void test_dummy_iterator(void) > > ObjectProperty *prop; > ObjectPropertyIterator iter; > - bool seenbv = false, seensv = false, seenav = false, seentype; > + bool seenbv = false, seensv = false, seenav = false; > + bool seenqv = false, seentype = false; > > object_property_iter_init(&iter, OBJECT(dobj)); > while ((prop = object_property_iter_next(&iter))) { > @@ -483,6 +526,8 @@ static void test_dummy_iterator(void) > seensv = true; > } else if (g_str_equal(prop->name, "av")) { > seenav = true; > + } else if (g_str_equal(prop->name, "qv")) { > + seenqv = true; > } else if (g_str_equal(prop->name, "type")) { > /* This prop comes from the base Object class */ > seentype = true; > @@ -494,6 +539,7 @@ static void test_dummy_iterator(void) > g_assert(seenbv); > g_assert(seenav); > g_assert(seensv); > + g_assert(seenqv); > g_assert(seentype); > > object_unparent(OBJECT(dobj)); > @@ -513,6 +559,137 @@ static void test_dummy_delchild(void) > object_unparent(OBJECT(dev)); > } > > +static void test_dummy_get_set_ptr_struct(void) > +{ > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > + Error *local_err = NULL; > + const char *s = "my other dummy string"; > + UserDefOne *ret; > + UserDefOne val; > + > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefOne, &local_err); > + g_assert(!local_err); > + > + g_assert_cmpint(ret->integer, ==, 0); > + g_assert_cmpstr(ret->string, ==, "dummy string"); > + g_assert(!ret->has_enum1); > + qapi_free_UserDefOne(ret); > + > + val.integer = 42; > + val.string = g_strdup(s); > + val.has_enum1 = true; > + val.enum1 = ENUM_ONE_VALUE1; > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > + UserDefOne, &local_err); > + g_assert(!local_err); > + > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefOne, &local_err); > + g_assert(!local_err); > + > + g_assert_cmpint(ret->integer, ==, val.integer); > + g_assert_cmpstr(ret->string, ==, val.string); > + g_assert(ret->has_enum1); > + g_assert_cmpint(ret->enum1, ==, val.enum1); > + g_free(val.string); > + qapi_free_UserDefOne(ret); > +} > + > +static void test_dummy_get_set_ptr_contravariant(void) > +{ > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > + Error *local_err = NULL; > + UserDefOneMore *ret; > + UserDefOneMore val; > + > + /* You cannot retrieve a contravariant (subclass) type... */ > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefOneMore, &local_err); > + g_assert(local_err); > + g_assert(!ret); > + error_free(local_err); > + local_err = NULL; > + > + /* And you cannot set one either. */ > + val.integer = 42; > + val.string = g_strdup("unused"); > + val.has_enum1 = false; > + val.boolean = false; > + > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > + UserDefOneMore, &local_err); > + g_assert(local_err); > +} > + > +static void test_dummy_get_set_ptr_covariant(void) > +{ > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > + Error *local_err = NULL; > + UserDefZero *ret; > + UserDefZero val; > + > + /* You can retrieve a covariant (superclass) type... */ > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefZero, &local_err); > + g_assert(!local_err); > + > + g_assert_cmpint(ret->integer, ==, 0); > + qapi_free_UserDefZero(ret); > + > + /* But you cannot set one. */ > + val.integer = 42; > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > + UserDefZero, &local_err); > + g_assert(local_err); > + error_free(local_err); > + local_err = NULL; > + > + /* Test that the property has not been modified at all */ > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefZero, &local_err); > + g_assert(!local_err); > + > + g_assert_cmpint(ret->integer, ==, 0); > + qapi_free_UserDefZero(ret); > +} > + > +static void test_dummy_get_set_ptr_error(void) > +{ > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > + Error *local_err = NULL; > + const char *s = "my other dummy string"; > + UserDefOne *ret; > + UserDefOne val; > + > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "blah", > + UserDefOne, &local_err); > + g_assert(local_err); > + g_assert(!ret); > + error_free(local_err); > + local_err = NULL; > + > + val.integer = 42; > + val.string = g_strdup(s); > + val.has_enum1 = true; > + val.enum1 = 100; > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > + UserDefOne, &local_err); > + g_assert(local_err); > + error_free(local_err); > + local_err = NULL; > + > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefOne, &local_err); > + g_assert(!local_err); > + > + /* Test that the property has not been modified at all */ > + g_assert_cmpint(ret->integer, ==, 0); > + g_assert_cmpstr(ret->string, ==, "dummy string"); > + g_assert(!ret->has_enum1); > + qapi_free_UserDefOne(ret); > +} > + > int main(int argc, char **argv) > { > g_test_init(&argc, &argv, NULL); > @@ -530,5 +707,9 @@ int main(int argc, char **argv) > g_test_add_func("/qom/proplist/iterator", test_dummy_iterator); > g_test_add_func("/qom/proplist/delchild", test_dummy_delchild); > > + g_test_add_func("/qom/proplist/get-set-ptr/struct", test_dummy_get_set_ptr_struct); > + g_test_add_func("/qom/proplist/get-set-ptr/error", test_dummy_get_set_ptr_error); > + g_test_add_func("/qom/proplist/get-set-ptr/covariant", test_dummy_get_set_ptr_covariant); > + g_test_add_func("/qom/proplist/get-set-ptr/contravariant", test_dummy_get_set_ptr_contravariant); > return g_test_run(); > } > diff --git a/tests/qapi-schema/qapi-schema-test.json b/tests/qapi-schema/qapi-schema-test.json > index f4d8cc4..4e3f6ff 100644 > --- a/tests/qapi-schema/qapi-schema-test.json > +++ b/tests/qapi-schema/qapi-schema-test.json > @@ -91,6 +91,14 @@ > '*enum1': 'EnumOne' } } # intentional forward reference > > ## > +# @UserDefOneMore: > +# for testing nested structs > +## > +{ 'struct': 'UserDefOneMore', > + 'base': 'UserDefOne', > + 'data': { 'boolean': 'bool' } } > + > +## > # @EnumOne: > ## > { 'enum': 'EnumOne', > ^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr 2017-02-21 11:56 ` Paolo Bonzini @ 2017-02-21 16:36 ` Marc-André Lureau 0 siblings, 0 replies; 22+ messages in thread From: Marc-André Lureau @ 2017-02-21 16:36 UTC (permalink / raw) To: Paolo Bonzini, qemu-devel; +Cc: den, anton.nefedov Hi On Tue, Feb 21, 2017 at 4:17 PM Paolo Bonzini <pbonzini@redhat.com> wrote: > > > On 21/02/2017 11:42, Paolo Bonzini wrote: > > The functions simplify the handling of QOM properties whose type > > is a QAPI struct. They go through a QObject just like the other > > functions that access a QOM property through its C type. > > > > Like QAPI_CLONE, the functions are wrapped by macros that take a > > QAPI type name and use it to build the name of a visitor function. > > > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > > --- > > include/qom/qom-qobject.h | 68 ++++++++++++ > > qom/qom-qobject.c | 49 +++++++++ > > tests/Makefile.include | 2 +- > > tests/check-qom-proplist.c | 185 > +++++++++++++++++++++++++++++++- > > tests/qapi-schema/qapi-schema-test.json | 8 ++ > > 5 files changed, 309 insertions(+), 3 deletions(-) > > Missing hunk: > > diff --git a/tests/qapi-schema/qapi-schema-test.out > b/tests/qapi-schema/qapi-schema-test.out > index bc8d496..d3a2990 100644 > --- a/tests/qapi-schema/qapi-schema-test.out > +++ b/tests/qapi-schema/qapi-schema-test.out > @@ -107,6 +107,9 @@ object UserDefOne > base UserDefZero > member string: str optional=False > member enum1: EnumOne optional=True > +object UserDefOneMore > + base UserDefOne > + member boolean: bool optional=False > object UserDefOptions > member i64: intList optional=True > member u64: uint64List optional=True > @@ -283,6 +286,9 @@ for testing override of default naming heuristic > doc symbol=UserDefOne expr=('struct', 'UserDefOne') > body= > for testing nested structs > +doc symbol=UserDefOneMore expr=('struct', 'UserDefOneMore') > + body= > +for testing nested structs > doc symbol=EnumOne expr=('enum', 'EnumOne') > doc symbol=UserDefZero expr=('struct', 'UserDefZero') > doc symbol=UserDefTwoDictDict expr=('struct', 'UserDefTwoDictDict') > > Paolo > > > diff --git a/include/qom/qom-qobject.h b/include/qom/qom-qobject.h > > index 77cd717..ff1d307 100644 > > --- a/include/qom/qom-qobject.h > > +++ b/include/qom/qom-qobject.h > > @@ -39,4 +39,72 @@ struct QObject *object_property_get_qobject(Object > *obj, const char *name, > > void object_property_set_qobject(Object *obj, struct QObject *qobj, > > const char *name, struct Error **errp); > > > > +/** > > + * object_property_get_ptr: > > + * @obj: the object > > + * @ptr: The C struct that will be written to the property. > drop that line > > + * @name: the name of the property > > + * @visit_type: the visitor function for @ptr's type. > > + * @errp: returns an error if this function fails > > + * > > + * Return: the value of an object's property, unmarshaled into a C > object > > + * through a QAPI type visitor, or NULL if an error occurs. > > + */ > > +void *object_property_get_ptr(Object *obj, const char *name, > > + void (*visit_type)(Visitor *, const char > *, > > + void **, Error **), > > + Error **errp); > > + > > +/** > > + * OBJECT_PROPERTY_GET_PTR: > > + * @obj: the object > > + * @ptr: The C struct that will be written to the property. > drop that line > > + * @name: the name of the property > > + * @type: the name of the C struct type pointed to by @ptr. > > + * @errp: returns an error if this function fails > > + * > > + * Return: the value of an object's property, unmarshaled into a C > object > > + * through a QAPI type visitor, or NULL if an error occurs. > > + */ > > +#define OBJECT_PROPERTY_GET_PTR(obj, name, type, errp) > \ > > + ((type *) > \ > > + object_property_get_ptr(obj, name, > \ > > + (void (*)(Visitor *, const char *, > void**, \ > > + Error **))visit_type_ ## type, > \ > > + errp)) > > + > > +/** > > + * object_property_set_ptr: > > + * @obj: the object > > + * @ptr: The C struct that will be written to the property. > > + * @name: the name of the property > > + * @visit_type: the visitor function for @ptr's type. > > + * @errp: returns an error if this function fails > > + * > > + * Sets an object's property to a C object's value, using a QAPI > > + * type visitor to marshal the C struct into the object. > > + */ > > +void object_property_set_ptr(Object *obj, void *ptr, const char *name, > > + void (*visit_type)(Visitor *, const char *, > > + void **, Error **), > > + Error **errp); > > + > > +/** > > + * OBJECT_PROPERTY_SET_PTR: > > + * @obj: the object > > + * @ptr: The C struct that will be written to the property. > > + * @name: the name of the property > > + * @type: the name of the C struct type pointed to by @ptr. > > + * @errp: returns an error if this function fails > > + * > > + * Sets an object's property to a C object's value, using a QAPI > > + * type visitor to marshal the C struct into the object. > > + */ > > +#define OBJECT_PROPERTY_SET_PTR(obj, ptr, name, type, errp) > \ > > + object_property_set_ptr(obj, ptr + type_check(type, typeof(*ptr)), > \ > > + name, > \ > > + (void (*)(Visitor *, const char *, void**, > \ > > + Error **))visit_type_ ## type, > \ > > + errp) > > + > > #endif > > diff --git a/qom/qom-qobject.c b/qom/qom-qobject.c > > index 447e4a0..09a12e0 100644 > > --- a/qom/qom-qobject.c > > +++ b/qom/qom-qobject.c > > @@ -44,3 +44,52 @@ QObject *object_property_get_qobject(Object *obj, > const char *name, > > visit_free(v); > > return ret; > > } > > + > > +void object_property_set_ptr(Object *obj, void *ptr, const char *name, > > + void (*visit_type)(Visitor *, const char > *, void **, Error **), > > + Error **errp) > > +{ > > + Error *local_err = NULL; > > + QObject *ret = NULL; > > + Visitor *v; > > + v = qobject_output_visitor_new(&ret); > > + visit_type(v, name, &ptr, &local_err); > > + if (local_err) { > > + error_propagate(errp, local_err); > > + visit_free(v); > > + return; > > + } > > + visit_complete(v, &ret); > > + visit_free(v); > > + > > + /* Do not use object_property_set_qobject until we switch it > > + * to use qobject_input_visitor_new in strict mode. See the > > + * /qom/proplist/get-set-ptr/contravariant unit test. > > + */ > > + v = qobject_input_visitor_new(ret, true); > > + object_property_set(obj, v, name, errp); > > + visit_free(v); > > + qobject_decref(ret); > > +} > > + > > +void *object_property_get_ptr(Object *obj, const char *name, > > + void (*visit_type)(Visitor *, const char > *, void **, Error **), > > + Error **errp) > > +{ > > + QObject *ret; > > + Visitor *v; > > + void *ptr = NULL; > > + > > + ret = object_property_get_qobject(obj, name, errp); > > + if (!ret) { > > + return NULL; > > + } > > + > > + /* Do not enable strict mode to allow passing covariant > > + * data types. > > + */ > > + v = qobject_input_visitor_new(ret, false); > > + visit_type(v, name, &ptr, errp); > > + qobject_decref(ret); > visit_free(v) ? > > + return ptr; > > +} > > diff --git a/tests/Makefile.include b/tests/Makefile.include > > index 634394a..9de910b 100644 > > --- a/tests/Makefile.include > > +++ b/tests/Makefile.include > > @@ -515,7 +515,7 @@ tests/check-qfloat$(EXESUF): tests/check-qfloat.o > $(test-util-obj-y) > > tests/check-qnull$(EXESUF): tests/check-qnull.o $(test-util-obj-y) > > tests/check-qjson$(EXESUF): tests/check-qjson.o $(test-util-obj-y) > > tests/check-qom-interface$(EXESUF): tests/check-qom-interface.o > $(test-qom-obj-y) > > -tests/check-qom-proplist$(EXESUF): tests/check-qom-proplist.o > $(test-qom-obj-y) > > +tests/check-qom-proplist$(EXESUF): tests/check-qom-proplist.o > $(test-qom-obj-y) $(test-qapi-obj-y) > > > > tests/test-char$(EXESUF): tests/test-char.o qemu-timer.o \ > > $(test-util-obj-y) $(qtest-obj-y) $(test-block-obj-y) > $(chardev-obj-y) > > diff --git a/tests/check-qom-proplist.c b/tests/check-qom-proplist.c > > index a16cefc..e0ad880 100644 > > --- a/tests/check-qom-proplist.c > > +++ b/tests/check-qom-proplist.c > > @@ -22,8 +22,11 @@ > > > > #include "qapi/error.h" > > #include "qom/object.h" > > +#include "qom/qom-qobject.h" > > #include "qemu/module.h" > > > > +#include "test-qapi-types.h" > > +#include "test-qapi-visit.h" > > > > #define TYPE_DUMMY "qemu-dummy" > > > > @@ -56,6 +59,8 @@ struct DummyObject { > > bool bv; > > DummyAnimal av; > > char *sv; > > + > > + UserDefOne *qv; > > }; > > > > struct DummyObjectClass { > > @@ -120,12 +125,42 @@ static char *dummy_get_sv(Object *obj, > > > > static void dummy_init(Object *obj) > > { > > + DummyObject *dobj = DUMMY_OBJECT(obj); > > + > > object_property_add_bool(obj, "bv", > > dummy_get_bv, > > dummy_set_bv, > > NULL); > > + dobj->qv = g_new0(UserDefOne, 1); > > + dobj->qv->string = g_strdup("dummy string"); > > +} > > + > > + > > +static void dummy_get_qv(Object *obj, Visitor *v, const char *name, > > + void *opaque, Error **errp) > > +{ > > + DummyObject *dobj = DUMMY_OBJECT(obj); > > + > > + visit_type_UserDefOne(v, name, &dobj->qv, errp); > > } > > > > +static void dummy_set_qv(Object *obj, Visitor *v, const char *name, > > + void *opaque, Error **errp) > > +{ > > + DummyObject *dobj = DUMMY_OBJECT(obj); > > + UserDefOne *qv = NULL; > > + Error *local_err = NULL; > > + > > + visit_type_UserDefOne(v, name, &qv, &local_err); > > + if (local_err) { > > + g_assert(qv == NULL); > > + error_propagate(errp, local_err); > > + return; > > + } > > + > > + qapi_free_UserDefOne(dobj->qv); > > + dobj->qv = qv; > > +} > > > > static void dummy_class_init(ObjectClass *cls, void *data) > > { > > @@ -143,6 +178,13 @@ static void dummy_class_init(ObjectClass *cls, void > *data) > > dummy_get_av, > > dummy_set_av, > > NULL); > > + object_class_property_add(cls, "qv", > > + "UserDefOne", > > + dummy_get_qv, > > + dummy_set_qv, > > + NULL, > > + NULL, > > + NULL); > > } > > > > > > @@ -151,9 +193,9 @@ static void dummy_finalize(Object *obj) > > DummyObject *dobj = DUMMY_OBJECT(obj); > > > > g_free(dobj->sv); > > + qapi_free_UserDefOne(dobj->qv); > > } > > > > - > > static const TypeInfo dummy_info = { > > .name = TYPE_DUMMY, > > .parent = TYPE_OBJECT, > > @@ -473,7 +515,8 @@ static void test_dummy_iterator(void) > > > > ObjectProperty *prop; > > ObjectPropertyIterator iter; > > - bool seenbv = false, seensv = false, seenav = false, seentype; > > + bool seenbv = false, seensv = false, seenav = false; > > + bool seenqv = false, seentype = false; > > > > object_property_iter_init(&iter, OBJECT(dobj)); > > while ((prop = object_property_iter_next(&iter))) { > > @@ -483,6 +526,8 @@ static void test_dummy_iterator(void) > > seensv = true; > > } else if (g_str_equal(prop->name, "av")) { > > seenav = true; > > + } else if (g_str_equal(prop->name, "qv")) { > > + seenqv = true; > > } else if (g_str_equal(prop->name, "type")) { > > /* This prop comes from the base Object class */ > > seentype = true; > > @@ -494,6 +539,7 @@ static void test_dummy_iterator(void) > > g_assert(seenbv); > > g_assert(seenav); > > g_assert(seensv); > > + g_assert(seenqv); > > g_assert(seentype); > > > > object_unparent(OBJECT(dobj)); > > @@ -513,6 +559,137 @@ static void test_dummy_delchild(void) > > object_unparent(OBJECT(dev)); > > } > > > > +static void test_dummy_get_set_ptr_struct(void) > > +{ > > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > > + Error *local_err = NULL; > > + const char *s = "my other dummy string"; > > + UserDefOne *ret; > > + UserDefOne val; > > + > > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > > + UserDefOne, &local_err); > > + g_assert(!local_err); > > + > > + g_assert_cmpint(ret->integer, ==, 0); > > + g_assert_cmpstr(ret->string, ==, "dummy string"); > > + g_assert(!ret->has_enum1); > > + qapi_free_UserDefOne(ret); > > + > > + val.integer = 42; > > + val.string = g_strdup(s); > > + val.has_enum1 = true; > > + val.enum1 = ENUM_ONE_VALUE1; > > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > > + UserDefOne, &local_err); > > + g_assert(!local_err); > > + > > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > > + UserDefOne, &local_err); > > + g_assert(!local_err); > > + > > + g_assert_cmpint(ret->integer, ==, val.integer); > > + g_assert_cmpstr(ret->string, ==, val.string); > > + g_assert(ret->has_enum1); > > + g_assert_cmpint(ret->enum1, ==, val.enum1); > > + g_free(val.string); > > + qapi_free_UserDefOne(ret); > > +} > > + > > +static void test_dummy_get_set_ptr_contravariant(void) > > +{ > > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > > + Error *local_err = NULL; > > + UserDefOneMore *ret; > > + UserDefOneMore val; > > + > > + /* You cannot retrieve a contravariant (subclass) type... */ > > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > > + UserDefOneMore, &local_err); > > + g_assert(local_err); > > + g_assert(!ret); > > + error_free(local_err); > > + local_err = NULL; > > + > > + /* And you cannot set one either. */ > > + val.integer = 42; > > + val.string = g_strdup("unused"); > > + val.has_enum1 = false; > > + val.boolean = false; > > + > > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > > + UserDefOneMore, &local_err); > > + g_assert(local_err); > > +} > > + > > +static void test_dummy_get_set_ptr_covariant(void) > > +{ > > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > > + Error *local_err = NULL; > > + UserDefZero *ret; > > + UserDefZero val; > > + > > + /* You can retrieve a covariant (superclass) type... */ > > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > > + UserDefZero, &local_err); > > + g_assert(!local_err); > > + > > + g_assert_cmpint(ret->integer, ==, 0); > > + qapi_free_UserDefZero(ret); > > + > > + /* But you cannot set one. */ > > + val.integer = 42; > > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > > + UserDefZero, &local_err); > > + g_assert(local_err); > > + error_free(local_err); > > + local_err = NULL; > > + > > + /* Test that the property has not been modified at all */ > > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > > + UserDefZero, &local_err); > > + g_assert(!local_err); > > + > > + g_assert_cmpint(ret->integer, ==, 0); > > + qapi_free_UserDefZero(ret); > > +} > > + > > +static void test_dummy_get_set_ptr_error(void) > > +{ > > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > > + Error *local_err = NULL; > > + const char *s = "my other dummy string"; > > + UserDefOne *ret; > > + UserDefOne val; > > + > > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "blah", > > + UserDefOne, &local_err); > > + g_assert(local_err); > > + g_assert(!ret); > > + error_free(local_err); > > + local_err = NULL; > > + > > + val.integer = 42; > > + val.string = g_strdup(s); > > + val.has_enum1 = true; > > + val.enum1 = 100; > > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > > + UserDefOne, &local_err); > > + g_assert(local_err); > > + error_free(local_err); > > + local_err = NULL; > > + > > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > > + UserDefOne, &local_err); > > + g_assert(!local_err); > > + > > + /* Test that the property has not been modified at all */ > > + g_assert_cmpint(ret->integer, ==, 0); > > + g_assert_cmpstr(ret->string, ==, "dummy string"); > > + g_assert(!ret->has_enum1); > > + qapi_free_UserDefOne(ret); > > +} > > + > > int main(int argc, char **argv) > > { > > g_test_init(&argc, &argv, NULL); > > @@ -530,5 +707,9 @@ int main(int argc, char **argv) > > g_test_add_func("/qom/proplist/iterator", test_dummy_iterator); > > g_test_add_func("/qom/proplist/delchild", test_dummy_delchild); > > > > + g_test_add_func("/qom/proplist/get-set-ptr/struct", > test_dummy_get_set_ptr_struct); > > + g_test_add_func("/qom/proplist/get-set-ptr/error", > test_dummy_get_set_ptr_error); > > + g_test_add_func("/qom/proplist/get-set-ptr/covariant", > test_dummy_get_set_ptr_covariant); > > + g_test_add_func("/qom/proplist/get-set-ptr/contravariant", > test_dummy_get_set_ptr_contravariant); > > return g_test_run(); > > } > > diff --git a/tests/qapi-schema/qapi-schema-test.json > b/tests/qapi-schema/qapi-schema-test.json > > index f4d8cc4..4e3f6ff 100644 > > --- a/tests/qapi-schema/qapi-schema-test.json > > +++ b/tests/qapi-schema/qapi-schema-test.json > > @@ -91,6 +91,14 @@ > > '*enum1': 'EnumOne' } } # intentional forward reference > > > > ## > > +# @UserDefOneMore: > > +# for testing nested structs > > +## > > +{ 'struct': 'UserDefOneMore', > > + 'base': 'UserDefOne', > > + 'data': { 'boolean': 'bool' } } > > + > > +## > > # @EnumOne: > > ## > > { 'enum': 'EnumOne', > > > > -- Marc-André Lureau ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr 2017-02-21 10:42 ` [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr Paolo Bonzini 2017-02-21 11:56 ` Paolo Bonzini @ 2017-02-21 15:57 ` Eric Blake 2017-02-21 16:23 ` Paolo Bonzini 1 sibling, 1 reply; 22+ messages in thread From: Eric Blake @ 2017-02-21 15:57 UTC (permalink / raw) To: Paolo Bonzini, qemu-devel; +Cc: anton.nefedov, den [-- Attachment #1: Type: text/plain, Size: 10781 bytes --] On 02/21/2017 04:42 AM, Paolo Bonzini wrote: > The functions simplify the handling of QOM properties whose type > is a QAPI struct. They go through a QObject just like the other > functions that access a QOM property through its C type. > > Like QAPI_CLONE, the functions are wrapped by macros that take a > QAPI type name and use it to build the name of a visitor function. I'm glad I got QAPI_CLONE working - it has proven to be a nice source of inspiration for further cleanups. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > include/qom/qom-qobject.h | 68 ++++++++++++ > qom/qom-qobject.c | 49 +++++++++ > tests/Makefile.include | 2 +- > tests/check-qom-proplist.c | 185 +++++++++++++++++++++++++++++++- > tests/qapi-schema/qapi-schema-test.json | 8 ++ > 5 files changed, 309 insertions(+), 3 deletions(-) > > diff --git a/include/qom/qom-qobject.h b/include/qom/qom-qobject.h > index 77cd717..ff1d307 100644 > --- a/include/qom/qom-qobject.h > +++ b/include/qom/qom-qobject.h > @@ -39,4 +39,72 @@ struct QObject *object_property_get_qobject(Object *obj, const char *name, > void object_property_set_qobject(Object *obj, struct QObject *qobj, > const char *name, struct Error **errp); > > +/** > + * object_property_get_ptr: > + * @obj: the object > + * @ptr: The C struct that will be written to the property. Maybe: The C struct that will be set to the property's value Except there is no ptr parameter in this function signature. Copy-and-paste leftover? > + * @name: the name of the property Inconsistent use of trailing '.' > + * @visit_type: the visitor function for @ptr's type. Since there is no @ptr, this needs a touchup. > + * @errp: returns an error if this function fails > + * > + * Return: the value of an object's property, unmarshaled into a C object > + * through a QAPI type visitor, or NULL if an error occurs. > + */ > +void *object_property_get_ptr(Object *obj, const char *name, > + void (*visit_type)(Visitor *, const char *, > + void **, Error **), > + Error **errp); > + > +/** > + * OBJECT_PROPERTY_GET_PTR: > + * @obj: the object > + * @ptr: The C struct that will be written to the property. Again, no ptr parameter. > + * @name: the name of the property > + * @type: the name of the C struct type pointed to by @ptr. and again > + * @errp: returns an error if this function fails > + * > + * Return: the value of an object's property, unmarshaled into a C object > + * through a QAPI type visitor, or NULL if an error occurs. > + */ > +#define OBJECT_PROPERTY_GET_PTR(obj, name, type, errp) \ > + ((type *) \ > + object_property_get_ptr(obj, name, \ > + (void (*)(Visitor *, const char *, void**, \ > + Error **))visit_type_ ## type, \ Is it worth a typedef somewhere to make it easier to cast between visitor functions? > + errp)) > + > +/** > + * object_property_set_ptr: > + * @obj: the object > + * @ptr: The C struct that will be written to the property. > + * @name: the name of the property > + * @visit_type: the visitor function for @ptr's type. It's a bit weird to separate 'ptr' and 'visit_type' by another parameter, since they are so integrally related; can we reorder the parameters to put 'name' before 'ptr', or does that look inconsistent compared to other existing property manipulations? > + * @errp: returns an error if this function fails > + * > + * Sets an object's property to a C object's value, using a QAPI > + * type visitor to marshal the C struct into the object. > + */ > +void object_property_set_ptr(Object *obj, void *ptr, const char *name, > + void (*visit_type)(Visitor *, const char *, > + void **, Error **), > + Error **errp); > + > +/** > + * OBJECT_PROPERTY_SET_PTR: > + * @obj: the object > + * @ptr: The C struct that will be written to the property. > + * @name: the name of the property > + * @type: the name of the C struct type pointed to by @ptr. Same ordering question, same trailing '.' observation > + * @errp: returns an error if this function fails > + * > + * Sets an object's property to a C object's value, using a QAPI > + * type visitor to marshal the C struct into the object. > + */ > +#define OBJECT_PROPERTY_SET_PTR(obj, ptr, name, type, errp) \ > + object_property_set_ptr(obj, ptr + type_check(type, typeof(*ptr)), \ > + name, \ > + (void (*)(Visitor *, const char *, void**, \ > + Error **))visit_type_ ## type, \ and the typedef'd function pointer may again come in handy. > + errp) > + > #endif > diff --git a/qom/qom-qobject.c b/qom/qom-qobject.c > index 447e4a0..09a12e0 100644 > --- a/qom/qom-qobject.c > +++ b/qom/qom-qobject.c > @@ -44,3 +44,52 @@ QObject *object_property_get_qobject(Object *obj, const char *name, > visit_free(v); > return ret; > } > + > +void object_property_set_ptr(Object *obj, void *ptr, const char *name, > + void (*visit_type)(Visitor *, const char *, void **, Error **), Long line; you wrapped it in the .h, so you could do so here, too. > + Error **errp) > +{ > + Error *local_err = NULL; > + QObject *ret = NULL; > + Visitor *v; > + v = qobject_output_visitor_new(&ret); > + visit_type(v, name, &ptr, &local_err); > + if (local_err) { > + error_propagate(errp, local_err); > + visit_free(v); > + return; > + } > + visit_complete(v, &ret); > + visit_free(v); > + > + /* Do not use object_property_set_qobject until we switch it > + * to use qobject_input_visitor_new in strict mode. See the > + * /qom/proplist/get-set-ptr/contravariant unit test. Interesting observation (and useful comment). I wonder how far we are from killing off non-strict mode, but that's an independent question not for this series. > + */ > + v = qobject_input_visitor_new(ret, true); > + object_property_set(obj, v, name, errp); > + visit_free(v); > + qobject_decref(ret); > +} > + > +void *object_property_get_ptr(Object *obj, const char *name, > + void (*visit_type)(Visitor *, const char *, void **, Error **), > + Error **errp) > +{ > + QObject *ret; > + Visitor *v; > + void *ptr = NULL; > + > + ret = object_property_get_qobject(obj, name, errp); > + if (!ret) { > + return NULL; > + } > + > + /* Do not enable strict mode to allow passing covariant > + * data types. > + */ > + v = qobject_input_visitor_new(ret, false); > + visit_type(v, name, &ptr, errp); > + qobject_decref(ret); > + return ptr; > +} > +++ b/tests/check-qom-proplist.c > + > +static void test_dummy_get_set_ptr_contravariant(void) > +{ > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > + Error *local_err = NULL; > + UserDefOneMore *ret; > + UserDefOneMore val; > + > + /* You cannot retrieve a contravariant (subclass) type... */ > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefOneMore, &local_err); > + g_assert(local_err); > + g_assert(!ret); > + error_free(local_err); Markus just posted a cleanup patch that uses error_free_or_abort() instead of multiple lines. This check makes sense (we can't populate userDefOneMore, because it has a mandatory field in the subtype that was not stored in the property). > + local_err = NULL; > + > + /* And you cannot set one either. */ > + val.integer = 42; > + val.string = g_strdup("unused"); > + val.has_enum1 = false; > + val.boolean = false; > + > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > + UserDefOneMore, &local_err); > + g_assert(local_err); Leaks local_err; use error_free_or_abort(). Makes sense, because the subtype has an extra field that isn't supported by the property. > +} > + > +static void test_dummy_get_set_ptr_covariant(void) > +{ > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > + Error *local_err = NULL; > + UserDefZero *ret; > + UserDefZero val; > + > + /* You can retrieve a covariant (superclass) type... */ > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefZero, &local_err); > + g_assert(!local_err); > + > + g_assert_cmpint(ret->integer, ==, 0); > + qapi_free_UserDefZero(ret); You coded a non-strict visitor above to allow this to happen, but is it really what we want? It basically means we are grabbing the property fields we care about, while ignoring the rest of the property. I guess it may be okay. > + > + /* But you cannot set one. */ > + val.integer = 42; > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > + UserDefZero, &local_err); > + g_assert(local_err); > + error_free(local_err); > + local_err = NULL; Makes sense that we cannot set something that does not have enough fields present to match what the property is expecting. > + > + /* Test that the property has not been modified at all */ > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefZero, &local_err); > + g_assert(!local_err); > + > + g_assert_cmpint(ret->integer, ==, 0); > + qapi_free_UserDefZero(ret); > +} > + > +++ b/tests/qapi-schema/qapi-schema-test.json > @@ -91,6 +91,14 @@ > '*enum1': 'EnumOne' } } # intentional forward reference > > ## > +# @UserDefOneMore: > +# for testing nested structs Is nested the right word here? > +## > +{ 'struct': 'UserDefOneMore', > + 'base': 'UserDefOne', > + 'data': { 'boolean': 'bool' } } > + > +## > # @EnumOne: > ## > { 'enum': 'EnumOne', > -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 604 bytes --] ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr 2017-02-21 15:57 ` Eric Blake @ 2017-02-21 16:23 ` Paolo Bonzini 0 siblings, 0 replies; 22+ messages in thread From: Paolo Bonzini @ 2017-02-21 16:23 UTC (permalink / raw) To: Eric Blake, qemu-devel; +Cc: anton.nefedov, den [-- Attachment #1: Type: text/plain, Size: 1587 bytes --] On 21/02/2017 16:57, Eric Blake wrote: >> + /* You can retrieve a covariant (superclass) type... */ >> + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", >> + UserDefZero, &local_err); >> + g_assert(!local_err); >> + >> + g_assert_cmpint(ret->integer, ==, 0); >> + qapi_free_UserDefZero(ret); > > You coded a non-strict visitor above to allow this to happen, but is it > really what we want? It basically means we are grabbing the property > fields we care about, while ignoring the rest of the property. I guess > it may be okay. The tests were very useful to write, because I had hardly gotten any of the corner cases right. :) I think these semantics make the most sense. Yeah, it uses non-strict mode but this test provides a reason (namely, covariant return types) why non-strict mode is useful. It makes backwards-compatibility easier. >> + >> + /* Test that the property has not been modified at all */ >> + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", >> + UserDefZero, &local_err); >> + g_assert(!local_err); >> + >> + g_assert_cmpint(ret->integer, ==, 0); >> + qapi_free_UserDefZero(ret); >> +} >> + >> +++ b/tests/qapi-schema/qapi-schema-test.json >> @@ -91,6 +91,14 @@ >> '*enum1': 'EnumOne' } } # intentional forward reference >> >> ## >> +# @UserDefOneMore: >> +# for testing nested structs > Is nested the right word here? Just copied from UserDefOne. :) I'll change both to "derived". Paolo [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 473 bytes --] ^ permalink raw reply [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH 2/3] cpu: implement get_crash_info through QOM properties 2017-02-21 10:42 [Qemu-devel] [PATCH 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED Paolo Bonzini 2017-02-21 10:42 ` [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr Paolo Bonzini @ 2017-02-21 10:42 ` Paolo Bonzini 2017-02-21 16:11 ` Eric Blake 2017-02-21 10:42 ` [Qemu-devel] [PATCH 3/3] vl: pass CPUState to qemu_system_guest_panicked Paolo Bonzini ` (3 subsequent siblings) 5 siblings, 1 reply; 22+ messages in thread From: Paolo Bonzini @ 2017-02-21 10:42 UTC (permalink / raw) To: qemu-devel; +Cc: eblake, anton.nefedov, den Provide a generic implementation for all CPU subclasses. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- include/qom/cpu.h | 1 - qom/cpu.c | 11 ++++------- target/i386/cpu.c | 2 +- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/include/qom/cpu.h b/include/qom/cpu.h index 1bc3ad2..04d3a2c 100644 --- a/include/qom/cpu.h +++ b/include/qom/cpu.h @@ -158,7 +158,6 @@ typedef struct CPUClass { uint8_t *buf, int len, bool is_write); void (*dump_state)(CPUState *cpu, FILE *f, fprintf_function cpu_fprintf, int flags); - GuestPanicInformation* (*get_crash_info)(CPUState *cpu); void (*dump_statistics)(CPUState *cpu, FILE *f, fprintf_function cpu_fprintf, int flags); int64_t (*get_arch_id)(CPUState *cpu); diff --git a/qom/cpu.c b/qom/cpu.c index 7e005af..a9482ce 100644 --- a/qom/cpu.c +++ b/qom/cpu.c @@ -22,6 +22,8 @@ #include "qapi/error.h" #include "qemu-common.h" #include "qom/cpu.h" +#include "qom/qom-qobject.h" +#include "qapi-visit.h" #include "sysemu/hw_accel.h" #include "qemu/notify.h" #include "qemu/log.h" @@ -220,13 +222,8 @@ static bool cpu_common_exec_interrupt(CPUState *cpu, int int_req) GuestPanicInformation *cpu_get_crash_info(CPUState *cpu) { - CPUClass *cc = CPU_GET_CLASS(cpu); - GuestPanicInformation *res = NULL; - - if (cc->get_crash_info) { - res = cc->get_crash_info(cpu); - } - return res; + return OBJECT_PROPERTY_GET_PTR(OBJECT(cpu), "crash-information", + GuestPanicInformation, NULL); } void cpu_dump_state(CPUState *cpu, FILE *f, fprintf_function cpu_fprintf, diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 63be816..3071769 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -3516,6 +3516,7 @@ static GuestPanicInformation *x86_cpu_get_crash_info(CPUState *cs) return panic_info; } + static void x86_cpu_get_crash_info_qom(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) @@ -3731,7 +3732,6 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data) cc->do_interrupt = x86_cpu_do_interrupt; cc->cpu_exec_interrupt = x86_cpu_exec_interrupt; cc->dump_state = x86_cpu_dump_state; - cc->get_crash_info = x86_cpu_get_crash_info; cc->set_pc = x86_cpu_set_pc; cc->synchronize_from_tb = x86_cpu_synchronize_from_tb; cc->gdb_read_register = x86_cpu_gdb_read_register; -- 2.9.3 ^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 2/3] cpu: implement get_crash_info through QOM properties 2017-02-21 10:42 ` [Qemu-devel] [PATCH 2/3] cpu: implement get_crash_info through QOM properties Paolo Bonzini @ 2017-02-21 16:11 ` Eric Blake 0 siblings, 0 replies; 22+ messages in thread From: Eric Blake @ 2017-02-21 16:11 UTC (permalink / raw) To: Paolo Bonzini, qemu-devel; +Cc: anton.nefedov, den [-- Attachment #1: Type: text/plain, Size: 480 bytes --] On 02/21/2017 04:42 AM, Paolo Bonzini wrote: > Provide a generic implementation for all CPU subclasses. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > include/qom/cpu.h | 1 - > qom/cpu.c | 11 ++++------- > target/i386/cpu.c | 2 +- > 3 files changed, 5 insertions(+), 9 deletions(-) Reviewed-by: Eric Blake <eblake@redhat.com> -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 604 bytes --] ^ permalink raw reply [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH 3/3] vl: pass CPUState to qemu_system_guest_panicked 2017-02-21 10:42 [Qemu-devel] [PATCH 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED Paolo Bonzini 2017-02-21 10:42 ` [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr Paolo Bonzini 2017-02-21 10:42 ` [Qemu-devel] [PATCH 2/3] cpu: implement get_crash_info through QOM properties Paolo Bonzini @ 2017-02-21 10:42 ` Paolo Bonzini 2017-02-21 16:13 ` Eric Blake 2017-02-22 9:17 ` Anton Nefedov 2017-02-21 10:50 ` [Qemu-devel] [PATCH 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED no-reply ` (2 subsequent siblings) 5 siblings, 2 replies; 22+ messages in thread From: Paolo Bonzini @ 2017-02-21 10:42 UTC (permalink / raw) To: qemu-devel; +Cc: eblake, anton.nefedov, den qemu_system_guest_panicked was already using current_cpu implicitly, so it makes sense for it to receive a CPUState. This lets the function call cpu_get_crash_info and free the result. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- include/sysemu/sysemu.h | 2 +- kvm-all.c | 2 +- vl.c | 13 ++++++++++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h index 576c7ce..a02f53a 100644 --- a/include/sysemu/sysemu.h +++ b/include/sysemu/sysemu.h @@ -66,7 +66,7 @@ int qemu_shutdown_requested_get(void); int qemu_reset_requested_get(void); void qemu_system_killed(int signal, pid_t pid); void qemu_system_reset(bool report); -void qemu_system_guest_panicked(GuestPanicInformation *info); +void qemu_system_guest_panicked(CPUState *cpu); size_t qemu_target_page_bits(void); void qemu_add_exit_notifier(Notifier *notify); diff --git a/kvm-all.c b/kvm-all.c index 7ad20b7..edecef0 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -2071,7 +2071,7 @@ int kvm_cpu_exec(CPUState *cpu) case KVM_SYSTEM_EVENT_CRASH: kvm_cpu_synchronize_state(cpu); qemu_mutex_lock_iothread(); - qemu_system_guest_panicked(cpu_get_crash_info(cpu)); + qemu_system_guest_panicked(cpu); qemu_mutex_unlock_iothread(); ret = 0; break; diff --git a/vl.c b/vl.c index d8b9dec..2de75ce 100644 --- a/vl.c +++ b/vl.c @@ -1679,13 +1679,20 @@ void qemu_system_reset(bool report) cpu_synchronize_all_post_reset(); } -void qemu_system_guest_panicked(GuestPanicInformation *info) +void qemu_system_guest_panicked(CPUState *cpu) { + GuestPanicInformation *info = NULL; + qemu_log_mask(LOG_GUEST_ERROR, "Guest crashed\n"); - if (current_cpu) { - current_cpu->crash_occurred = true; + if (!cpu) { + cpu = current_cpu; + } + if (cpu) { + cpu->crash_occurred = true; + info = cpu_get_crash_info(cpu); } + qapi_event_send_guest_panicked(GUEST_PANIC_ACTION_PAUSE, !!info, info, &error_abort); vm_stop(RUN_STATE_GUEST_PANICKED); -- 2.9.3 ^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 3/3] vl: pass CPUState to qemu_system_guest_panicked 2017-02-21 10:42 ` [Qemu-devel] [PATCH 3/3] vl: pass CPUState to qemu_system_guest_panicked Paolo Bonzini @ 2017-02-21 16:13 ` Eric Blake 2017-02-22 9:17 ` Anton Nefedov 1 sibling, 0 replies; 22+ messages in thread From: Eric Blake @ 2017-02-21 16:13 UTC (permalink / raw) To: Paolo Bonzini, qemu-devel; +Cc: anton.nefedov, den [-- Attachment #1: Type: text/plain, Size: 641 bytes --] On 02/21/2017 04:42 AM, Paolo Bonzini wrote: > qemu_system_guest_panicked was already using current_cpu implicitly, > so it makes sense for it to receive a CPUState. This lets the > function call cpu_get_crash_info and free the result. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > include/sysemu/sysemu.h | 2 +- > kvm-all.c | 2 +- > vl.c | 13 ++++++++++--- > 3 files changed, 12 insertions(+), 5 deletions(-) > Reviewed-by: Eric Blake <eblake@redhat.com> -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 604 bytes --] ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 3/3] vl: pass CPUState to qemu_system_guest_panicked 2017-02-21 10:42 ` [Qemu-devel] [PATCH 3/3] vl: pass CPUState to qemu_system_guest_panicked Paolo Bonzini 2017-02-21 16:13 ` Eric Blake @ 2017-02-22 9:17 ` Anton Nefedov 1 sibling, 0 replies; 22+ messages in thread From: Anton Nefedov @ 2017-02-22 9:17 UTC (permalink / raw) To: Paolo Bonzini, qemu-devel; +Cc: eblake, den hi, On 02/21/2017 01:42 PM, Paolo Bonzini wrote: > qemu_system_guest_panicked was already using current_cpu implicitly, > so it makes sense for it to receive a CPUState. This lets the > function call cpu_get_crash_info and free the result. > my motivation against this was that as qemu_system_guest_panicked() is also used by pvpanic device, if it's ever going to pass any information, GuestPanicInformation struct could be reused. Though I guess it doesnt matter much now /Anton ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED 2017-02-21 10:42 [Qemu-devel] [PATCH 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED Paolo Bonzini ` (2 preceding siblings ...) 2017-02-21 10:42 ` [Qemu-devel] [PATCH 3/3] vl: pass CPUState to qemu_system_guest_panicked Paolo Bonzini @ 2017-02-21 10:50 ` no-reply 2017-02-21 10:52 ` no-reply 2017-02-21 11:02 ` no-reply 5 siblings, 0 replies; 22+ messages in thread From: no-reply @ 2017-02-21 10:50 UTC (permalink / raw) To: pbonzini; +Cc: famz, qemu-devel, den, anton.nefedov Hi, This series seems to have some coding style problems. See output below for more information: Type: series Subject: [Qemu-devel] [PATCH 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED Message-id: 20170221104256.5153-1-pbonzini@redhat.com === TEST SCRIPT BEGIN === #!/bin/bash BASE=base n=1 total=$(git log --oneline $BASE.. | wc -l) failed=0 # Useful git options git config --local diff.renamelimit 0 git config --local diff.renames True commits="$(git log --format=%H --reverse $BASE..)" for c in $commits; do echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..." if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then failed=1 echo fi n=$((n+1)) done exit $failed === TEST SCRIPT END === Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384 From https://github.com/patchew-project/qemu - [tag update] patchew/1487669841-13668-1-git-send-email-kraxel@redhat.com -> patchew/1487669841-13668-1-git-send-email-kraxel@redhat.com * [new tag] patchew/20170221104256.5153-1-pbonzini@redhat.com -> patchew/20170221104256.5153-1-pbonzini@redhat.com Switched to a new branch 'test' 70b329a vl: pass CPUState to qemu_system_guest_panicked e15b95f cpu: implement get_crash_info through QOM properties b48c439 qom-qobject: introduce object_property_{g, s}et_ptr === OUTPUT BEGIN === Checking PATCH 1/3: qom-qobject: introduce object_property_{g, s}et_ptr... ERROR: line over 90 characters #103: FILE: qom/qom-qobject.c:49: + void (*visit_type)(Visitor *, const char *, void **, Error **), ERROR: line over 90 characters #130: FILE: qom/qom-qobject.c:76: + void (*visit_type)(Visitor *, const char *, void **, Error **), WARNING: line over 80 characters #425: FILE: tests/check-qom-proplist.c:710: + g_test_add_func("/qom/proplist/get-set-ptr/struct", test_dummy_get_set_ptr_struct); WARNING: line over 80 characters #426: FILE: tests/check-qom-proplist.c:711: + g_test_add_func("/qom/proplist/get-set-ptr/error", test_dummy_get_set_ptr_error); ERROR: line over 90 characters #427: FILE: tests/check-qom-proplist.c:712: + g_test_add_func("/qom/proplist/get-set-ptr/covariant", test_dummy_get_set_ptr_covariant); ERROR: line over 90 characters #428: FILE: tests/check-qom-proplist.c:713: + g_test_add_func("/qom/proplist/get-set-ptr/contravariant", test_dummy_get_set_ptr_contravariant); total: 4 errors, 2 warnings, 400 lines checked Your patch has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. Checking PATCH 2/3: cpu: implement get_crash_info through QOM properties... Checking PATCH 3/3: vl: pass CPUState to qemu_system_guest_panicked... === OUTPUT END === Test command exited with code: 1 --- Email generated automatically by Patchew [http://patchew.org/]. Please send your feedback to patchew-devel@freelists.org ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED 2017-02-21 10:42 [Qemu-devel] [PATCH 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED Paolo Bonzini ` (3 preceding siblings ...) 2017-02-21 10:50 ` [Qemu-devel] [PATCH 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED no-reply @ 2017-02-21 10:52 ` no-reply 2017-02-21 11:02 ` no-reply 5 siblings, 0 replies; 22+ messages in thread From: no-reply @ 2017-02-21 10:52 UTC (permalink / raw) To: pbonzini; +Cc: famz, qemu-devel, den, anton.nefedov Hi, This series failed automatic build test. Please find the testing commands and their output below. If you have docker installed, you can probably reproduce it locally. Type: series Subject: [Qemu-devel] [PATCH 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED Message-id: 20170221104256.5153-1-pbonzini@redhat.com === TEST SCRIPT BEGIN === #!/bin/bash set -e git submodule update --init dtc # Let docker tests dump environment info export SHOW_ENV=1 export J=16 make docker-test-quick@centos6 make docker-test-mingw@fedora make docker-test-build@min-glib === TEST SCRIPT END === Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384 Switched to a new branch 'test' 70b329a vl: pass CPUState to qemu_system_guest_panicked e15b95f cpu: implement get_crash_info through QOM properties b48c439 qom-qobject: introduce object_property_{g, s}et_ptr === OUTPUT BEGIN === Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc' Cloning into 'dtc'... Submodule path 'dtc': checked out '65cc4d2748a2c2e6f27f1cf39e07a5dbabd80ebf' BUILD centos6 make[1]: Entering directory `/var/tmp/patchew-tester-tmp-fi8frq6v/src' ARCHIVE qemu.tgz ARCHIVE dtc.tgz COPY RUNNER RUN test-quick in qemu:centos6 Packages installed: SDL-devel-1.2.14-7.el6_7.1.x86_64 ccache-3.1.6-2.el6.x86_64 epel-release-6-8.noarch gcc-4.4.7-17.el6.x86_64 git-1.7.1-4.el6_7.1.x86_64 glib2-devel-2.28.8-5.el6.x86_64 libfdt-devel-1.4.0-1.el6.x86_64 make-3.81-23.el6.x86_64 package g++ is not installed pixman-devel-0.32.8-1.el6.x86_64 tar-1.23-15.el6_8.x86_64 zlib-devel-1.2.3-29.el6.x86_64 Environment variables: PACKAGES=libfdt-devel ccache tar git make gcc g++ zlib-devel glib2-devel SDL-devel pixman-devel epel-release HOSTNAME=7f764896b6eb TERM=xterm MAKEFLAGS= -j16 HISTSIZE=1000 J=16 USER=root CCACHE_DIR=/var/tmp/ccache EXTRA_CONFIGURE_OPTS= V= SHOW_ENV=1 MAIL=/var/spool/mail/root PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PWD=/ LANG=en_US.UTF-8 TARGET_LIST= HISTCONTROL=ignoredups SHLVL=1 HOME=/root TEST_DIR=/tmp/qemu-test LOGNAME=root LESSOPEN=||/usr/bin/lesspipe.sh %s FEATURES= dtc DEBUG= G_BROKEN_FILENAMES=1 CCACHE_HASHDIR= _=/usr/bin/env Configure options: --enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/var/tmp/qemu-build/install No C++ compiler available; disabling C++ specific optional code Install prefix /var/tmp/qemu-build/install BIOS directory /var/tmp/qemu-build/install/share/qemu binary directory /var/tmp/qemu-build/install/bin library directory /var/tmp/qemu-build/install/lib module directory /var/tmp/qemu-build/install/lib/qemu libexec directory /var/tmp/qemu-build/install/libexec include directory /var/tmp/qemu-build/install/include config directory /var/tmp/qemu-build/install/etc local state directory /var/tmp/qemu-build/install/var Manual directory /var/tmp/qemu-build/install/share/man ELF interp prefix /usr/gnemul/qemu-%M Source path /tmp/qemu-test/src C compiler cc Host C compiler cc C++ compiler Objective-C compiler cc ARFLAGS rv CFLAGS -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g QEMU_CFLAGS -I/usr/include/pixman-1 -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -fPIE -DPIE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-all LDFLAGS -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g make make install install python python -B smbd /usr/sbin/smbd module support no host CPU x86_64 host big endian no target list x86_64-softmmu aarch64-softmmu tcg debug enabled no gprof enabled no sparse enabled no strip binaries yes profiler no static build no pixman system SDL support yes (1.2.14) GTK support no GTK GL support no VTE support no TLS priority NORMAL GNUTLS support no GNUTLS rnd no libgcrypt no libgcrypt kdf no nettle no nettle kdf no libtasn1 no curses support no virgl support no curl support no mingw32 support no Audio drivers oss Block whitelist (rw) Block whitelist (ro) VirtFS support no VNC support yes VNC SASL support no VNC JPEG support no VNC PNG support no xen support no brlapi support no bluez support no Documentation no PIE yes vde support no netmap support no Linux AIO support no ATTR/XATTR support yes Install blobs yes KVM support yes HAX support no RDMA support no TCG interpreter no fdt support yes preadv support yes fdatasync yes madvise yes posix_madvise yes libcap-ng support no vhost-net support yes vhost-scsi support yes vhost-vsock support yes Trace backends log spice support no rbd support no xfsctl support no smartcard support no libusb no usb net redir no OpenGL support no OpenGL dmabufs no libiscsi support no libnfs support no build guest agent yes QGA VSS support no QGA w32 disk info no QGA MSI support no seccomp support no coroutine backend ucontext coroutine pool yes debug stack usage no GlusterFS support no Archipelago support no gcov gcov gcov enabled no TPM support yes libssh2 support no TPM passthrough yes QOM debugging yes lzo support no snappy support no bzip2 support no NUMA host support no tcmalloc support no jemalloc support no avx2 optimization no replication support yes GEN x86_64-softmmu/config-devices.mak.tmp GEN aarch64-softmmu/config-devices.mak.tmp GEN config-host.h GEN qemu-options.def GEN qmp-commands.h GEN qmp-introspect.h GEN qapi-types.h GEN qapi-visit.h GEN qapi-event.h GEN trace/generated-tcg-tracers.h GEN trace/generated-helpers-wrappers.h GEN trace/generated-helpers.h GEN module_block.h GEN tests/test-qapi-types.h GEN tests/test-qapi-visit.h GEN tests/test-qmp-commands.h GEN x86_64-softmmu/config-devices.mak GEN aarch64-softmmu/config-devices.mak GEN tests/test-qapi-event.h GEN tests/test-qmp-introspect.h GEN trace-root.h GEN util/trace.h GEN crypto/trace.h GEN io/trace.h GEN migration/trace.h GEN block/trace.h GEN backends/trace.h GEN hw/block/trace.h GEN hw/block/dataplane/trace.h GEN hw/char/trace.h GEN hw/intc/trace.h GEN hw/net/trace.h GEN hw/virtio/trace.h GEN hw/audio/trace.h GEN hw/misc/trace.h GEN hw/usb/trace.h GEN hw/scsi/trace.h GEN hw/nvram/trace.h GEN hw/display/trace.h GEN hw/input/trace.h GEN hw/timer/trace.h GEN hw/dma/trace.h GEN hw/sparc/trace.h GEN hw/sd/trace.h GEN hw/isa/trace.h GEN hw/mem/trace.h GEN hw/i386/trace.h GEN hw/i386/xen/trace.h GEN hw/9pfs/trace.h GEN hw/ppc/trace.h GEN hw/pci/trace.h GEN hw/s390x/trace.h GEN hw/vfio/trace.h GEN hw/acpi/trace.h GEN hw/arm/trace.h GEN hw/alpha/trace.h GEN hw/xen/trace.h GEN ui/trace.h GEN audio/trace.h GEN net/trace.h GEN target/arm/trace.h GEN target/i386/trace.h GEN target/sparc/trace.h GEN target/s390x/trace.h GEN target/ppc/trace.h GEN qom/trace.h GEN linux-user/trace.h GEN qapi/trace.h GEN config-all-devices.mak CC tests/qemu-iotests/socket_scm_helper.o GEN qga/qapi-generated/qga-qapi-types.h GEN qga/qapi-generated/qga-qapi-types.c GEN qga/qapi-generated/qga-qapi-visit.h GEN qga/qapi-generated/qga-qmp-commands.h GEN qga/qapi-generated/qga-qapi-visit.c GEN qga/qapi-generated/qga-qmp-marshal.c GEN trace-root.c GEN util/trace.c GEN crypto/trace.c GEN io/trace.c GEN migration/trace.c GEN block/trace.c GEN backends/trace.c GEN hw/block/trace.c GEN hw/block/dataplane/trace.c GEN hw/char/trace.c GEN hw/intc/trace.c GEN hw/net/trace.c GEN hw/virtio/trace.c GEN hw/audio/trace.c GEN hw/misc/trace.c GEN hw/usb/trace.c GEN hw/scsi/trace.c GEN hw/nvram/trace.c GEN hw/display/trace.c GEN hw/input/trace.c GEN hw/timer/trace.c GEN hw/dma/trace.c GEN hw/sparc/trace.c GEN hw/sd/trace.c GEN hw/isa/trace.c GEN hw/mem/trace.c GEN hw/i386/trace.c GEN hw/i386/xen/trace.c GEN hw/9pfs/trace.c GEN hw/ppc/trace.c GEN hw/pci/trace.c GEN hw/s390x/trace.c GEN hw/vfio/trace.c GEN hw/acpi/trace.c GEN hw/arm/trace.c GEN hw/alpha/trace.c GEN hw/xen/trace.c GEN ui/trace.c GEN audio/trace.c GEN net/trace.c GEN target/arm/trace.c GEN target/i386/trace.c GEN target/sparc/trace.c GEN target/s390x/trace.c GEN target/ppc/trace.c GEN qom/trace.c GEN linux-user/trace.c GEN qapi/trace.c GEN qmp-introspect.c GEN qapi-types.c GEN qapi-visit.c CC qapi/qapi-visit-core.o GEN qapi-event.c CC qapi/qapi-dealloc-visitor.o CC qapi/qobject-input-visitor.o CC qapi/qobject-output-visitor.o CC qapi/qmp-registry.o CC qapi/qmp-dispatch.o CC qapi/string-input-visitor.o CC qapi/string-output-visitor.o CC qapi/opts-visitor.o CC qapi/qapi-clone-visitor.o CC qapi/qmp-event.o CC qobject/qnull.o CC qapi/qapi-util.o CC qobject/qint.o CC qobject/qstring.o CC qobject/qdict.o CC qobject/qlist.o CC qobject/qfloat.o CC qobject/qbool.o CC qobject/qjson.o CC qobject/qobject.o CC qobject/json-lexer.o CC qobject/json-streamer.o CC qobject/json-parser.o CC trace/control.o CC trace/qmp.o CC util/osdep.o CC util/cutils.o CC util/unicode.o CC util/qemu-timer-common.o CC util/bufferiszero.o CC util/lockcnt.o CC util/compatfd.o CC util/event_notifier-posix.o CC util/mmap-alloc.o CC util/oslib-posix.o CC util/qemu-openpty.o CC util/qemu-thread-posix.o CC util/memfd.o CC util/envlist.o CC util/path.o CC util/module.o CC util/host-utils.o CC util/bitmap.o CC util/bitops.o CC util/hbitmap.o CC util/fifo8.o CC util/acl.o CC util/error.o CC util/qemu-error.o CC util/iov.o CC util/id.o CC util/qemu-config.o CC util/qemu-sockets.o CC util/uri.o CC util/qemu-option.o CC util/notify.o CC util/qemu-progress.o CC util/hexdump.o CC util/crc32c.o CC util/uuid.o CC util/throttle.o CC util/getauxval.o CC util/readline.o CC util/rcu.o CC util/qemu-coroutine.o CC util/qemu-coroutine-lock.o CC util/qemu-coroutine-io.o CC util/qemu-coroutine-sleep.o CC util/coroutine-ucontext.o CC util/buffer.o CC util/timed-average.o CC util/base64.o CC util/log.o CC util/qdist.o CC util/qht.o CC util/range.o CC crypto/pbkdf-stub.o CC stubs/arch-query-cpu-def.o CC stubs/arch-query-cpu-model-expansion.o CC stubs/arch-query-cpu-model-comparison.o CC stubs/arch-query-cpu-model-baseline.o CC stubs/bdrv-next-monitor-owned.o CC stubs/blk-commit-all.o CC stubs/blockdev-close-all-bdrv-states.o CC stubs/clock-warp.o CC stubs/cpu-get-clock.o CC stubs/cpu-get-icount.o CC stubs/dump.o CC stubs/error-printf.o CC stubs/fdset.o CC stubs/gdbstub.o CC stubs/get-vm-name.o CC stubs/iothread.o CC stubs/iothread-lock.o CC stubs/is-daemonized.o CC stubs/machine-init-done.o CC stubs/migr-blocker.o CC stubs/monitor.o CC stubs/notify-event.o CC stubs/qtest.o CC stubs/replay.o CC stubs/runstate-check.o CC stubs/set-fd-handler.o CC stubs/slirp.o CC stubs/sysbus.o CC stubs/trace-control.o CC stubs/uuid.o CC stubs/vm-stop.o CC stubs/vmstate.o CC stubs/qmp_pc_dimm_device_list.o CC stubs/target-monitor-defs.o CC stubs/target-get-monitor-def.o CC stubs/pc_madt_cpu_entry.o CC contrib/ivshmem-client/ivshmem-client.o CC contrib/ivshmem-client/main.o CC contrib/ivshmem-server/ivshmem-server.o CC contrib/ivshmem-server/main.o CC qemu-nbd.o CC async.o CC thread-pool.o CC block.o CC blockjob.o CC main-loop.o CC iohandler.o CC qemu-timer.o CC aio-posix.o CC qemu-io-cmds.o CC replication.o CC block/raw-format.o CC block/qcow.o CC block/vdi.o CC block/vmdk.o CC block/cloop.o CC block/bochs.o CC block/vpc.o CC block/dmg.o CC block/vvfat.o CC block/qcow2.o CC block/qcow2-refcount.o CC block/qcow2-cluster.o CC block/qcow2-snapshot.o CC block/qcow2-cache.o CC block/qed.o CC block/qed-l2-cache.o CC block/qed-gencb.o CC block/qed-table.o CC block/qed-cluster.o CC block/qed-check.o CC block/vhdx.o CC block/vhdx-endian.o CC block/vhdx-log.o CC block/quorum.o CC block/parallels.o CC block/blkdebug.o CC block/blkverify.o CC block/blkreplay.o CC block/block-backend.o CC block/snapshot.o CC block/qapi.o CC block/file-posix.o CC block/null.o CC block/mirror.o CC block/commit.o CC block/io.o CC block/throttle-groups.o CC block/nbd.o CC block/nbd-client.o CC block/sheepdog.o CC block/accounting.o CC block/dirty-bitmap.o CC block/write-threshold.o CC block/backup.o CC block/replication.o CC block/crypto.o CC nbd/server.o CC nbd/client.o CC nbd/common.o CC crypto/init.o CC crypto/hash.o CC crypto/hash-glib.o CC crypto/hmac.o CC crypto/hmac-glib.o CC crypto/aes.o CC crypto/tlscreds.o CC crypto/desrfb.o CC crypto/cipher.o CC crypto/tlscredsx509.o CC crypto/tlscredsanon.o CC crypto/tlssession.o CC crypto/secret.o CC crypto/random-platform.o CC crypto/pbkdf.o CC crypto/ivgen.o CC crypto/ivgen-essiv.o CC crypto/ivgen-plain.o CC crypto/ivgen-plain64.o CC crypto/afsplit.o CC crypto/xts.o CC crypto/block.o CC crypto/block-qcow.o CC crypto/block-luks.o CC io/channel.o CC io/channel-buffer.o CC io/channel-command.o CC io/channel-file.o CC io/channel-socket.o CC io/channel-tls.o CC io/channel-watch.o CC io/channel-websock.o CC io/channel-util.o CC io/dns-resolver.o CC io/task.o CC qom/object.o CC qom/container.o CC qom/qom-qobject.o CC qom/object_interfaces.o GEN qemu-img-cmds.h CC qemu-io.o CC qemu-bridge-helper.o CC blockdev.o CC blockdev-nbd.o CC iothread.o CC qdev-monitor.o CC device-hotplug.o CC os-posix.o CC page_cache.o CC accel.o CC bt-host.o CC bt-vhci.o CC dma-helpers.o CC vl.o CC tpm.o CC device_tree.o GEN qmp-marshal.c CC qmp.o CC hmp.o CC cpus-common.o CC audio/audio.o CC audio/noaudio.o CC audio/wavaudio.o CC audio/mixeng.o CC audio/sdlaudio.o CC audio/ossaudio.o CC audio/wavcapture.o CC backends/rng.o CC backends/rng-egd.o CC backends/rng-random.o CC backends/msmouse.o CC backends/wctablet.o CC backends/testdev.o CC backends/tpm.o CC backends/hostmem.o CC backends/hostmem-ram.o CC backends/hostmem-file.o CC backends/cryptodev.o CC backends/cryptodev-builtin.o CC block/stream.o CC disas/arm.o CC disas/i386.o CC fsdev/qemu-fsdev-dummy.o CC fsdev/qemu-fsdev-opts.o CC hw/acpi/core.o CC hw/acpi/piix4.o CC hw/acpi/pcihp.o CC hw/acpi/ich9.o CC hw/acpi/tco.o CC hw/acpi/cpu_hotplug.o CC hw/acpi/memory_hotplug.o CC hw/acpi/cpu.o CC hw/acpi/nvdimm.o CC hw/acpi/acpi_interface.o CC hw/acpi/bios-linker-loader.o CC hw/acpi/aml-build.o CC hw/acpi/ipmi.o CC hw/acpi/acpi-stub.o CC hw/acpi/ipmi-stub.o CC hw/audio/sb16.o CC hw/audio/es1370.o CC hw/audio/ac97.o CC hw/audio/fmopl.o CC hw/audio/adlib.o CC hw/audio/gus.o CC hw/audio/gusemu_hal.o CC hw/audio/gusemu_mixer.o CC hw/audio/cs4231a.o CC hw/audio/intel-hda.o CC hw/audio/hda-codec.o CC hw/audio/pcspk.o CC hw/audio/wm8750.o CC hw/audio/lm4549.o CC hw/audio/pl041.o CC hw/audio/marvell_88w8618.o CC hw/block/block.o CC hw/block/cdrom.o CC hw/block/hd-geometry.o CC hw/block/fdc.o CC hw/block/m25p80.o CC hw/block/nand.o CC hw/block/pflash_cfi01.o CC hw/block/pflash_cfi02.o CC hw/block/onenand.o CC hw/block/ecc.o CC hw/block/nvme.o CC hw/bt/core.o CC hw/bt/l2cap.o CC hw/bt/sdp.o CC hw/bt/hci.o CC hw/bt/hid.o CC hw/bt/hci-csr.o CC hw/char/ipoctal232.o CC hw/char/parallel.o CC hw/char/pl011.o CC hw/char/serial.o CC hw/char/serial-isa.o CC hw/char/serial-pci.o CC hw/char/virtio-console.o CC hw/char/cadence_uart.o CC hw/char/debugcon.o CC hw/char/imx_serial.o CC hw/core/qdev.o CC hw/core/qdev-properties.o CC hw/core/bus.o CC hw/core/reset.o CC hw/core/fw-path-provider.o CC hw/core/irq.o CC hw/core/hotplug.o CC hw/core/ptimer.o CC hw/core/sysbus.o CC hw/core/machine.o CC hw/core/loader.o CC hw/core/qdev-properties-system.o CC hw/core/register.o CC hw/core/or-irq.o CC hw/core/platform-bus.o CC hw/display/ads7846.o CC hw/display/cirrus_vga.o CC hw/display/pl110.o CC hw/display/ssd0303.o CC hw/display/ssd0323.o CC hw/display/vga-pci.o CC hw/display/vga-isa.o CC hw/display/vmware_vga.o CC hw/display/blizzard.o CC hw/display/exynos4210_fimd.o CC hw/display/framebuffer.o CC hw/display/tc6393xb.o CC hw/dma/pl080.o CC hw/dma/pl330.o CC hw/dma/i8257.o CC hw/dma/xlnx-zynq-devcfg.o CC hw/gpio/max7310.o CC hw/gpio/pl061.o CC hw/gpio/zaurus.o CC hw/gpio/gpio_key.o CC hw/i2c/core.o CC hw/i2c/smbus.o CC hw/i2c/smbus_eeprom.o CC hw/i2c/i2c-ddc.o CC hw/i2c/versatile_i2c.o CC hw/i2c/smbus_ich9.o CC hw/i2c/pm_smbus.o CC hw/i2c/bitbang_i2c.o CC hw/i2c/exynos4210_i2c.o CC hw/i2c/imx_i2c.o CC hw/i2c/aspeed_i2c.o CC hw/ide/core.o CC hw/ide/atapi.o CC hw/ide/qdev.o CC hw/ide/pci.o CC hw/ide/isa.o CC hw/ide/piix.o CC hw/ide/microdrive.o CC hw/ide/ahci.o CC hw/ide/ich.o CC hw/input/hid.o CC hw/input/lm832x.o CC hw/input/pckbd.o CC hw/input/pl050.o CC hw/input/ps2.o CC hw/input/stellaris_input.o CC hw/input/tsc2005.o CC hw/input/vmmouse.o CC hw/input/virtio-input.o CC hw/input/virtio-input-hid.o CC hw/input/virtio-input-host.o CC hw/intc/i8259_common.o CC hw/intc/i8259.o CC hw/intc/pl190.o CC hw/intc/imx_avic.o CC hw/intc/realview_gic.o CC hw/intc/ioapic_common.o CC hw/intc/arm_gic_common.o CC hw/intc/arm_gic.o CC hw/intc/arm_gicv2m.o CC hw/intc/arm_gicv3_common.o CC hw/intc/arm_gicv3.o CC hw/intc/arm_gicv3_dist.o CC hw/intc/arm_gicv3_redist.o CC hw/intc/arm_gicv3_its_common.o CC hw/intc/intc.o CC hw/ipack/ipack.o CC hw/ipack/tpci200.o CC hw/ipmi/ipmi.o CC hw/ipmi/ipmi_bmc_sim.o CC hw/ipmi/ipmi_bmc_extern.o CC hw/ipmi/isa_ipmi_kcs.o CC hw/ipmi/isa_ipmi_bt.o CC hw/isa/isa-bus.o CC hw/isa/apm.o CC hw/mem/pc-dimm.o CC hw/mem/nvdimm.o CC hw/misc/applesmc.o CC hw/misc/max111x.o CC hw/misc/tmp105.o CC hw/misc/debugexit.o CC hw/misc/sga.o CC hw/misc/pc-testdev.o CC hw/misc/pci-testdev.o CC hw/misc/unimp.o CC hw/misc/arm_l2x0.o CC hw/misc/arm_integrator_debug.o CC hw/misc/a9scu.o CC hw/misc/arm11scu.o CC hw/net/ne2000.o CC hw/net/eepro100.o CC hw/net/pcnet-pci.o CC hw/net/pcnet.o CC hw/net/e1000.o CC hw/net/e1000x_common.o CC hw/net/net_tx_pkt.o CC hw/net/net_rx_pkt.o CC hw/net/e1000e.o CC hw/net/e1000e_core.o CC hw/net/rtl8139.o CC hw/net/vmxnet3.o CC hw/net/smc91c111.o CC hw/net/lan9118.o CC hw/net/ne2000-isa.o CC hw/net/xgmac.o CC hw/net/allwinner_emac.o CC hw/net/imx_fec.o CC hw/net/cadence_gem.o CC hw/net/stellaris_enet.o CC hw/net/rocker/rocker.o CC hw/net/rocker/rocker_fp.o CC hw/net/rocker/rocker_desc.o CC hw/net/rocker/rocker_world.o CC hw/net/rocker/rocker_of_dpa.o CC hw/nvram/eeprom93xx.o CC hw/nvram/chrp_nvram.o CC hw/nvram/fw_cfg.o CC hw/pci-bridge/pci_bridge_dev.o CC hw/pci-bridge/pcie_root_port.o CC hw/pci-bridge/gen_pcie_root_port.o CC hw/pci-bridge/pci_expander_bridge.o CC hw/pci-bridge/xio3130_upstream.o CC hw/pci-bridge/xio3130_downstream.o CC hw/pci-bridge/ioh3420.o CC hw/pci-bridge/i82801b11.o CC hw/pci-host/pam.o CC hw/pci-host/versatile.o CC hw/pci-host/piix.o CC hw/pci-host/q35.o CC hw/pci-host/gpex.o CC hw/pci/pci.o CC hw/pci/pci_bridge.o CC hw/pci/msix.o CC hw/pci/msi.o CC hw/pci/shpc.o CC hw/pci/slotid_cap.o CC hw/pci/pci_host.o CC hw/pci/pcie_host.o CC hw/pci/pcie.o CC hw/pci/pcie_aer.o CC hw/pci/pcie_port.o CC hw/pci/pci-stub.o CC hw/pcmcia/pcmcia.o CC hw/scsi/scsi-disk.o CC hw/scsi/scsi-generic.o CC hw/scsi/scsi-bus.o CC hw/scsi/lsi53c895a.o CC hw/scsi/mptsas.o CC hw/scsi/mptconfig.o CC hw/scsi/mptendian.o CC hw/scsi/megasas.o CC hw/scsi/vmw_pvscsi.o CC hw/scsi/esp.o CC hw/scsi/esp-pci.o CC hw/sd/pl181.o CC hw/sd/ssi-sd.o CC hw/sd/sd.o CC hw/sd/core.o CC hw/sd/sdhci.o CC hw/smbios/smbios.o CC hw/smbios/smbios_type_38.o CC hw/smbios/smbios-stub.o CC hw/smbios/smbios_type_38-stub.o CC hw/ssi/pl022.o CC hw/ssi/ssi.o CC hw/ssi/xilinx_spips.o CC hw/ssi/aspeed_smc.o CC hw/ssi/stm32f2xx_spi.o CC hw/timer/arm_timer.o CC hw/timer/arm_mptimer.o CC hw/timer/cadence_ttc.o CC hw/timer/a9gtimer.o CC hw/timer/ds1338.o CC hw/timer/hpet.o CC hw/timer/i8254_common.o CC hw/timer/i8254.o CC hw/timer/pl031.o CC hw/timer/twl92230.o CC hw/timer/imx_epit.o CC hw/timer/imx_gpt.o CC hw/timer/stm32f2xx_timer.o CC hw/timer/aspeed_timer.o CC hw/tpm/tpm_tis.o CC hw/tpm/tpm_passthrough.o CC hw/tpm/tpm_util.o CC hw/usb/core.o CC hw/usb/combined-packet.o CC hw/usb/bus.o CC hw/usb/libhw.o CC hw/usb/desc.o CC hw/usb/desc-msos.o CC hw/usb/hcd-uhci.o CC hw/usb/hcd-ohci.o CC hw/usb/hcd-ehci.o CC hw/usb/hcd-ehci-pci.o CC hw/usb/hcd-ehci-sysbus.o CC hw/usb/hcd-xhci.o CC hw/usb/hcd-musb.o CC hw/usb/dev-hub.o CC hw/usb/dev-hid.o CC hw/usb/dev-wacom.o CC hw/usb/dev-storage.o CC hw/usb/dev-uas.o CC hw/usb/dev-audio.o CC hw/usb/dev-serial.o CC hw/usb/dev-network.o CC hw/usb/dev-bluetooth.o CC hw/usb/dev-smartcard-reader.o CC hw/usb/dev-mtp.o CC hw/usb/host-stub.o CC hw/virtio/virtio-rng.o CC hw/virtio/virtio-pci.o CC hw/virtio/virtio-bus.o CC hw/virtio/virtio-mmio.o CC hw/virtio/vhost-stub.o CC hw/watchdog/watchdog.o CC hw/watchdog/wdt_i6300esb.o CC hw/watchdog/wdt_ib700.o CC hw/watchdog/wdt_aspeed.o CC migration/migration.o CC migration/socket.o CC migration/tls.o CC migration/fd.o CC migration/exec.o CC migration/colo-comm.o CC migration/colo.o CC migration/colo-failover.o CC migration/vmstate.o CC migration/qemu-file.o CC migration/qemu-file-channel.o CC migration/xbzrle.o CC migration/postcopy-ram.o CC migration/qjson.o CC migration/block.o CC net/net.o CC net/queue.o CC net/checksum.o CC net/util.o CC net/hub.o CC net/socket.o CC net/dump.o CC net/eth.o CC net/l2tpv3.o CC net/tap.o CC net/vhost-user.o CC net/tap-linux.o CC net/slirp.o CC net/filter.o CC net/filter-buffer.o CC net/colo-compare.o CC net/filter-mirror.o CC net/colo.o CC net/filter-rewriter.o CC net/filter-replay.o CC qom/cpu.o CC replay/replay.o CC replay/replay-internal.o CC replay/replay-events.o CC replay/replay-time.o CC replay/replay-input.o CC replay/replay-char.o CC replay/replay-snapshot.o CC replay/replay-net.o CC slirp/cksum.o CC slirp/if.o CC slirp/ip_icmp.o CC slirp/ip6_icmp.o CC slirp/ip6_input.o CC slirp/ip6_output.o CC slirp/ip_input.o CC slirp/ip_output.o CC slirp/dnssearch.o CC slirp/dhcpv6.o CC slirp/slirp.o CC slirp/mbuf.o CC slirp/misc.o CC slirp/sbuf.o CC slirp/socket.o CC slirp/tcp_input.o CC slirp/tcp_output.o CC slirp/tcp_subr.o CC slirp/tcp_timer.o CC slirp/udp.o CC slirp/udp6.o /tmp/qemu-test/src/slirp/tcp_input.c: In function ‘tcp_input’: /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_p’ may be used uninitialized in this function /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_len’ may be used uninitialized in this function /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_tos’ may be used uninitialized in this function /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_id’ may be used uninitialized in this function /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_off’ may be used uninitialized in this function /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_ttl’ may be used uninitialized in this function /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_sum’ may be used uninitialized in this function /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_src.s_addr’ may be used uninitialized in this function /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_dst.s_addr’ may be used uninitialized in this function /tmp/qemu-test/src/slirp/tcp_input.c:220: warning: ‘save_ip6.ip_nh’ may be used uninitialized in this function CC slirp/bootp.o CC slirp/tftp.o CC slirp/arp_table.o CC slirp/ndp_table.o CC ui/keymaps.o CC ui/console.o CC ui/cursor.o CC ui/qemu-pixman.o CC ui/input.o CC ui/input-keymap.o /tmp/qemu-test/src/replay/replay-internal.c: In function ‘replay_put_array’: /tmp/qemu-test/src/replay/replay-internal.c:65: warning: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result CC ui/input-legacy.o CC ui/input-linux.o CC ui/sdl.o CC ui/sdl_zoom.o CC ui/x_keymap.o CC ui/vnc.o CC ui/vnc-enc-zlib.o CC ui/vnc-enc-hextile.o CC ui/vnc-enc-tight.o CC ui/vnc-palette.o CC ui/vnc-enc-zrle.o CC ui/vnc-auth-vencrypt.o CC ui/vnc-ws.o CC ui/vnc-jobs.o CC chardev/char.o CC chardev/char-fd.o CC chardev/char-file.o CC chardev/char-io.o CC chardev/char-mux.o CC chardev/char-null.o CC chardev/char-parallel.o CC chardev/char-pipe.o CC chardev/char-pty.o CC chardev/char-ringbuf.o CC chardev/char-serial.o CC chardev/char-socket.o CC chardev/char-stdio.o CC chardev/char-udp.o LINK tests/qemu-iotests/socket_scm_helper CC qga/commands.o CC qga/guest-agent-command-state.o CC qga/main.o CC qga/commands-posix.o CC qga/channel-posix.o CC qga/qapi-generated/qga-qapi-types.o CC qga/qapi-generated/qga-qapi-visit.o CC qga/qapi-generated/qga-qmp-marshal.o AS optionrom/multiboot.o AS optionrom/linuxboot.o CC optionrom/linuxboot_dma.o AS optionrom/kvmvapic.o cc: unrecognized option '-no-integrated-as' cc: unrecognized option '-no-integrated-as' CC qmp-introspect.o CC qapi-types.o CC qapi-visit.o CC qapi-event.o BUILD optionrom/linuxboot_dma.img CC qemu-img.o AR libqemustub.a CC qmp-marshal.o BUILD optionrom/multiboot.img CC trace-root.o BUILD optionrom/linuxboot_dma.raw BUILD optionrom/kvmvapic.img CC util/trace.o BUILD optionrom/multiboot.raw BUILD optionrom/linuxboot.img CC crypto/trace.o CC io/trace.o CC migration/trace.o SIGN optionrom/linuxboot_dma.bin CC block/trace.o CC backends/trace.o BUILD optionrom/kvmvapic.raw CC hw/block/trace.o SIGN optionrom/multiboot.bin BUILD optionrom/linuxboot.raw SIGN optionrom/kvmvapic.bin SIGN optionrom/linuxboot.bin CC hw/block/dataplane/trace.o CC hw/char/trace.o CC hw/intc/trace.o CC hw/net/trace.o CC hw/virtio/trace.o CC hw/audio/trace.o CC hw/misc/trace.o CC hw/usb/trace.o CC hw/scsi/trace.o CC hw/nvram/trace.o CC hw/display/trace.o CC hw/input/trace.o CC hw/timer/trace.o CC hw/dma/trace.o CC hw/sparc/trace.o CC hw/sd/trace.o CC hw/isa/trace.o CC hw/mem/trace.o CC hw/i386/trace.o CC hw/i386/xen/trace.o CC hw/9pfs/trace.o CC hw/ppc/trace.o CC hw/pci/trace.o CC hw/s390x/trace.o CC hw/vfio/trace.o CC hw/acpi/trace.o CC hw/arm/trace.o CC hw/alpha/trace.o CC hw/xen/trace.o CC ui/trace.o CC audio/trace.o CC net/trace.o CC target/arm/trace.o CC target/i386/trace.o CC target/sparc/trace.o CC target/s390x/trace.o CC target/ppc/trace.o CC qom/trace.o CC linux-user/trace.o CC qapi/trace.o AR libqemuutil.a LINK qemu-ga LINK ivshmem-client LINK ivshmem-server LINK qemu-nbd LINK qemu-img LINK qemu-io LINK qemu-bridge-helper GEN x86_64-softmmu/hmp-commands.h GEN x86_64-softmmu/hmp-commands-info.h GEN x86_64-softmmu/config-target.h GEN aarch64-softmmu/hmp-commands.h GEN aarch64-softmmu/hmp-commands-info.h GEN aarch64-softmmu/config-target.h CC x86_64-softmmu/exec.o CC x86_64-softmmu/translate-all.o CC x86_64-softmmu/cpu-exec.o CC x86_64-softmmu/translate-common.o CC x86_64-softmmu/cpu-exec-common.o CC x86_64-softmmu/tcg/tcg.o CC x86_64-softmmu/fpu/softfloat.o CC x86_64-softmmu/tcg/tcg-op.o CC x86_64-softmmu/tcg/optimize.o CC x86_64-softmmu/tcg-runtime.o CC x86_64-softmmu/tcg/tcg-common.o CC x86_64-softmmu/disas.o CC x86_64-softmmu/hax-stub.o CC x86_64-softmmu/arch_init.o CC x86_64-softmmu/cpus.o CC aarch64-softmmu/exec.o CC aarch64-softmmu/translate-all.o CC aarch64-softmmu/cpu-exec.o CC aarch64-softmmu/translate-common.o CC aarch64-softmmu/cpu-exec-common.o CC x86_64-softmmu/monitor.o CC x86_64-softmmu/gdbstub.o CC x86_64-softmmu/balloon.o CC aarch64-softmmu/tcg/tcg.o CC x86_64-softmmu/ioport.o CC aarch64-softmmu/tcg/tcg-op.o CC aarch64-softmmu/tcg/optimize.o CC aarch64-softmmu/tcg/tcg-common.o CC x86_64-softmmu/numa.o CC x86_64-softmmu/qtest.o CC aarch64-softmmu/fpu/softfloat.o CC aarch64-softmmu/disas.o CC aarch64-softmmu/tcg-runtime.o CC x86_64-softmmu/bootdevice.o GEN aarch64-softmmu/gdbstub-xml.c CC x86_64-softmmu/kvm-all.o CC aarch64-softmmu/hax-stub.o CC aarch64-softmmu/kvm-stub.o CC aarch64-softmmu/arch_init.o CC x86_64-softmmu/memory.o CC x86_64-softmmu/cputlb.o CC x86_64-softmmu/memory_mapping.o CC x86_64-softmmu/dump.o CC x86_64-softmmu/migration/ram.o CC aarch64-softmmu/cpus.o CC x86_64-softmmu/migration/savevm.o CC aarch64-softmmu/monitor.o CC aarch64-softmmu/gdbstub.o CC aarch64-softmmu/balloon.o CC x86_64-softmmu/xen-common-stub.o CC x86_64-softmmu/xen-hvm-stub.o CC aarch64-softmmu/ioport.o CC x86_64-softmmu/hw/block/virtio-blk.o CC aarch64-softmmu/numa.o CC x86_64-softmmu/hw/block/dataplane/virtio-blk.o CC x86_64-softmmu/hw/char/virtio-serial-bus.o CC x86_64-softmmu/hw/core/nmi.o CC x86_64-softmmu/hw/core/generic-loader.o CC x86_64-softmmu/hw/core/null-machine.o CC x86_64-softmmu/hw/cpu/core.o CC aarch64-softmmu/qtest.o CC aarch64-softmmu/bootdevice.o CC aarch64-softmmu/memory.o CC x86_64-softmmu/hw/display/vga.o CC x86_64-softmmu/hw/display/virtio-gpu.o CC aarch64-softmmu/cputlb.o CC aarch64-softmmu/memory_mapping.o CC aarch64-softmmu/dump.o CC aarch64-softmmu/migration/ram.o CC x86_64-softmmu/hw/display/virtio-gpu-3d.o CC aarch64-softmmu/migration/savevm.o CC x86_64-softmmu/hw/display/virtio-gpu-pci.o CC x86_64-softmmu/hw/display/virtio-vga.o CC aarch64-softmmu/xen-common-stub.o CC x86_64-softmmu/hw/intc/apic.o CC x86_64-softmmu/hw/intc/apic_common.o CC x86_64-softmmu/hw/intc/ioapic.o CC x86_64-softmmu/hw/isa/lpc_ich9.o CC aarch64-softmmu/xen-hvm-stub.o CC aarch64-softmmu/hw/adc/stm32f2xx_adc.o CC aarch64-softmmu/hw/block/virtio-blk.o CC aarch64-softmmu/hw/block/dataplane/virtio-blk.o CC aarch64-softmmu/hw/char/exynos4210_uart.o CC aarch64-softmmu/hw/char/omap_uart.o CC aarch64-softmmu/hw/char/digic-uart.o CC aarch64-softmmu/hw/char/stm32f2xx_usart.o CC x86_64-softmmu/hw/misc/vmport.o CC x86_64-softmmu/hw/misc/ivshmem.o CC x86_64-softmmu/hw/misc/pvpanic.o CC x86_64-softmmu/hw/misc/edu.o CC x86_64-softmmu/hw/misc/hyperv_testdev.o CC aarch64-softmmu/hw/char/bcm2835_aux.o CC aarch64-softmmu/hw/char/virtio-serial-bus.o CC aarch64-softmmu/hw/core/nmi.o CC aarch64-softmmu/hw/core/generic-loader.o CC x86_64-softmmu/hw/net/virtio-net.o CC aarch64-softmmu/hw/core/null-machine.o CC aarch64-softmmu/hw/cpu/arm11mpcore.o CC x86_64-softmmu/hw/net/vhost_net.o CC aarch64-softmmu/hw/cpu/realview_mpcore.o CC x86_64-softmmu/hw/scsi/virtio-scsi.o CC aarch64-softmmu/hw/cpu/a9mpcore.o CC aarch64-softmmu/hw/cpu/a15mpcore.o CC aarch64-softmmu/hw/cpu/core.o CC aarch64-softmmu/hw/display/omap_dss.o CC aarch64-softmmu/hw/display/omap_lcdc.o CC x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o CC x86_64-softmmu/hw/scsi/vhost-scsi.o CC x86_64-softmmu/hw/timer/mc146818rtc.o CC x86_64-softmmu/hw/vfio/common.o CC aarch64-softmmu/hw/display/pxa2xx_lcd.o CC x86_64-softmmu/hw/vfio/pci.o CC aarch64-softmmu/hw/display/bcm2835_fb.o CC aarch64-softmmu/hw/display/vga.o CC aarch64-softmmu/hw/display/virtio-gpu.o CC x86_64-softmmu/hw/vfio/pci-quirks.o CC aarch64-softmmu/hw/display/virtio-gpu-3d.o CC aarch64-softmmu/hw/display/virtio-gpu-pci.o CC aarch64-softmmu/hw/display/dpcd.o CC aarch64-softmmu/hw/display/xlnx_dp.o CC aarch64-softmmu/hw/dma/xlnx_dpdma.o CC aarch64-softmmu/hw/dma/omap_dma.o CC aarch64-softmmu/hw/dma/soc_dma.o CC aarch64-softmmu/hw/dma/pxa2xx_dma.o CC aarch64-softmmu/hw/dma/bcm2835_dma.o CC aarch64-softmmu/hw/gpio/omap_gpio.o CC aarch64-softmmu/hw/gpio/imx_gpio.o CC x86_64-softmmu/hw/vfio/platform.o CC aarch64-softmmu/hw/i2c/omap_i2c.o CC x86_64-softmmu/hw/vfio/spapr.o CC x86_64-softmmu/hw/virtio/virtio.o CC aarch64-softmmu/hw/input/pxa2xx_keypad.o CC aarch64-softmmu/hw/input/tsc210x.o CC x86_64-softmmu/hw/virtio/virtio-balloon.o CC x86_64-softmmu/hw/virtio/vhost.o CC aarch64-softmmu/hw/intc/armv7m_nvic.o CC aarch64-softmmu/hw/intc/exynos4210_gic.o CC x86_64-softmmu/hw/virtio/vhost-backend.o CC x86_64-softmmu/hw/virtio/vhost-user.o CC x86_64-softmmu/hw/virtio/vhost-vsock.o CC x86_64-softmmu/hw/virtio/virtio-crypto.o CC x86_64-softmmu/hw/virtio/virtio-crypto-pci.o CC x86_64-softmmu/hw/i386/multiboot.o CC aarch64-softmmu/hw/intc/exynos4210_combiner.o CC aarch64-softmmu/hw/intc/omap_intc.o CC aarch64-softmmu/hw/intc/bcm2835_ic.o CC x86_64-softmmu/hw/i386/pc.o CC aarch64-softmmu/hw/intc/bcm2836_control.o CC x86_64-softmmu/hw/i386/pc_piix.o CC x86_64-softmmu/hw/i386/pc_q35.o CC x86_64-softmmu/hw/i386/pc_sysfw.o CC aarch64-softmmu/hw/intc/allwinner-a10-pic.o CC aarch64-softmmu/hw/intc/aspeed_vic.o CC aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o CC aarch64-softmmu/hw/misc/ivshmem.o CC x86_64-softmmu/hw/i386/x86-iommu.o CC aarch64-softmmu/hw/misc/arm_sysctl.o CC aarch64-softmmu/hw/misc/cbus.o CC aarch64-softmmu/hw/misc/exynos4210_pmu.o CC aarch64-softmmu/hw/misc/imx_ccm.o CC aarch64-softmmu/hw/misc/imx31_ccm.o CC aarch64-softmmu/hw/misc/imx25_ccm.o CC aarch64-softmmu/hw/misc/imx6_ccm.o CC x86_64-softmmu/hw/i386/intel_iommu.o CC aarch64-softmmu/hw/misc/imx6_src.o CC aarch64-softmmu/hw/misc/mst_fpga.o CC x86_64-softmmu/hw/i386/amd_iommu.o CC x86_64-softmmu/hw/i386/kvmvapic.o CC x86_64-softmmu/hw/i386/acpi-build.o CC aarch64-softmmu/hw/misc/omap_clk.o CC x86_64-softmmu/hw/i386/pci-assign-load-rom.o CC x86_64-softmmu/hw/i386/kvm/clock.o CC x86_64-softmmu/hw/i386/kvm/apic.o CC x86_64-softmmu/hw/i386/kvm/i8259.o CC aarch64-softmmu/hw/misc/omap_gpmc.o CC aarch64-softmmu/hw/misc/omap_l4.o /tmp/qemu-test/src/hw/i386/pc_piix.c: In function ‘igd_passthrough_isa_bridge_create’: /tmp/qemu-test/src/hw/i386/pc_piix.c:1055: warning: ‘pch_rev_id’ may be used uninitialized in this function CC aarch64-softmmu/hw/misc/omap_sdrc.o CC aarch64-softmmu/hw/misc/omap_tap.o CC x86_64-softmmu/hw/i386/kvm/ioapic.o CC aarch64-softmmu/hw/misc/bcm2835_mbox.o CC aarch64-softmmu/hw/misc/bcm2835_property.o CC aarch64-softmmu/hw/misc/zynq_slcr.o CC aarch64-softmmu/hw/misc/zynq-xadc.o CC x86_64-softmmu/hw/i386/kvm/i8254.o CC aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o CC x86_64-softmmu/hw/i386/kvm/pci-assign.o CC aarch64-softmmu/hw/misc/edu.o CC x86_64-softmmu/target/i386/translate.o CC aarch64-softmmu/hw/misc/auxbus.o CC x86_64-softmmu/target/i386/helper.o CC x86_64-softmmu/target/i386/cpu.o CC x86_64-softmmu/target/i386/bpt_helper.o CC aarch64-softmmu/hw/misc/aspeed_scu.o CC x86_64-softmmu/target/i386/excp_helper.o CC aarch64-softmmu/hw/misc/aspeed_sdmc.o CC aarch64-softmmu/hw/net/virtio-net.o CC aarch64-softmmu/hw/net/vhost_net.o CC aarch64-softmmu/hw/pcmcia/pxa2xx.o CC aarch64-softmmu/hw/scsi/virtio-scsi.o CC aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o CC aarch64-softmmu/hw/scsi/vhost-scsi.o CC x86_64-softmmu/target/i386/fpu_helper.o CC x86_64-softmmu/target/i386/cc_helper.o CC aarch64-softmmu/hw/sd/omap_mmc.o CC x86_64-softmmu/target/i386/int_helper.o CC aarch64-softmmu/hw/sd/pxa2xx_mmci.o CC aarch64-softmmu/hw/ssi/omap_spi.o /tmp/qemu-test/src/hw/i386/acpi-build.c: In function ‘build_append_pci_bus_devices’: /tmp/qemu-test/src/hw/i386/acpi-build.c:495: warning: ‘notify_method’ may be used uninitialized in this function CC x86_64-softmmu/target/i386/svm_helper.o CC x86_64-softmmu/target/i386/smm_helper.o CC x86_64-softmmu/target/i386/misc_helper.o CC aarch64-softmmu/hw/ssi/imx_spi.o CC x86_64-softmmu/target/i386/mem_helper.o CC aarch64-softmmu/hw/timer/exynos4210_mct.o CC x86_64-softmmu/target/i386/seg_helper.o CC x86_64-softmmu/target/i386/mpx_helper.o CC x86_64-softmmu/target/i386/gdbstub.o CC x86_64-softmmu/target/i386/machine.o CC x86_64-softmmu/target/i386/arch_memory_mapping.o CC x86_64-softmmu/target/i386/arch_dump.o CC x86_64-softmmu/target/i386/monitor.o CC x86_64-softmmu/target/i386/kvm.o CC aarch64-softmmu/hw/timer/exynos4210_pwm.o CC x86_64-softmmu/target/i386/hyperv.o GEN trace/generated-helpers.c CC aarch64-softmmu/hw/timer/exynos4210_rtc.o CC x86_64-softmmu/trace/control-target.o CC aarch64-softmmu/hw/timer/omap_gptimer.o CC aarch64-softmmu/hw/timer/omap_synctimer.o CC aarch64-softmmu/hw/timer/pxa2xx_timer.o CC x86_64-softmmu/trace/generated-helpers.o CC aarch64-softmmu/hw/timer/digic-timer.o CC aarch64-softmmu/hw/timer/allwinner-a10-pit.o CC aarch64-softmmu/hw/usb/tusb6010.o CC aarch64-softmmu/hw/vfio/common.o CC aarch64-softmmu/hw/vfio/pci.o CC aarch64-softmmu/hw/vfio/pci-quirks.o CC aarch64-softmmu/hw/vfio/platform.o CC aarch64-softmmu/hw/vfio/calxeda-xgmac.o CC aarch64-softmmu/hw/vfio/amd-xgbe.o CC aarch64-softmmu/hw/vfio/spapr.o CC aarch64-softmmu/hw/virtio/virtio.o CC aarch64-softmmu/hw/virtio/virtio-balloon.o CC aarch64-softmmu/hw/virtio/vhost.o CC aarch64-softmmu/hw/virtio/vhost-backend.o CC aarch64-softmmu/hw/virtio/vhost-user.o CC aarch64-softmmu/hw/virtio/vhost-vsock.o CC aarch64-softmmu/hw/virtio/virtio-crypto.o CC aarch64-softmmu/hw/virtio/virtio-crypto-pci.o CC aarch64-softmmu/hw/arm/boot.o CC aarch64-softmmu/hw/arm/collie.o CC aarch64-softmmu/hw/arm/exynos4_boards.o CC aarch64-softmmu/hw/arm/gumstix.o CC aarch64-softmmu/hw/arm/highbank.o CC aarch64-softmmu/hw/arm/digic_boards.o CC aarch64-softmmu/hw/arm/integratorcp.o CC aarch64-softmmu/hw/arm/mainstone.o CC aarch64-softmmu/hw/arm/musicpal.o CC aarch64-softmmu/hw/arm/nseries.o CC aarch64-softmmu/hw/arm/omap_sx1.o CC aarch64-softmmu/hw/arm/palm.o CC aarch64-softmmu/hw/arm/realview.o CC aarch64-softmmu/hw/arm/spitz.o CC aarch64-softmmu/hw/arm/stellaris.o CC aarch64-softmmu/hw/arm/tosa.o CC aarch64-softmmu/hw/arm/versatilepb.o CC aarch64-softmmu/hw/arm/vexpress.o CC aarch64-softmmu/hw/arm/virt.o CC aarch64-softmmu/hw/arm/xilinx_zynq.o CC aarch64-softmmu/hw/arm/z2.o CC aarch64-softmmu/hw/arm/virt-acpi-build.o CC aarch64-softmmu/hw/arm/netduino2.o CC aarch64-softmmu/hw/arm/sysbus-fdt.o CC aarch64-softmmu/hw/arm/armv7m.o CC aarch64-softmmu/hw/arm/exynos4210.o CC aarch64-softmmu/hw/arm/pxa2xx.o CC aarch64-softmmu/hw/arm/pxa2xx_gpio.o CC aarch64-softmmu/hw/arm/pxa2xx_pic.o CC aarch64-softmmu/hw/arm/digic.o CC aarch64-softmmu/hw/arm/omap1.o CC aarch64-softmmu/hw/arm/omap2.o CC aarch64-softmmu/hw/arm/strongarm.o CC aarch64-softmmu/hw/arm/allwinner-a10.o CC aarch64-softmmu/hw/arm/cubieboard.o CC aarch64-softmmu/hw/arm/bcm2835_peripherals.o CC aarch64-softmmu/hw/arm/bcm2836.o CC aarch64-softmmu/hw/arm/raspi.o CC aarch64-softmmu/hw/arm/stm32f205_soc.o CC aarch64-softmmu/hw/arm/xlnx-zynqmp.o CC aarch64-softmmu/hw/arm/xlnx-ep108.o CC aarch64-softmmu/hw/arm/fsl-imx25.o CC aarch64-softmmu/hw/arm/imx25_pdk.o CC aarch64-softmmu/hw/arm/fsl-imx31.o CC aarch64-softmmu/hw/arm/kzm.o CC aarch64-softmmu/hw/arm/fsl-imx6.o CC aarch64-softmmu/hw/arm/sabrelite.o CC aarch64-softmmu/hw/arm/aspeed_soc.o CC aarch64-softmmu/hw/arm/aspeed.o CC aarch64-softmmu/target/arm/arm-semi.o CC aarch64-softmmu/target/arm/machine.o CC aarch64-softmmu/target/arm/psci.o CC aarch64-softmmu/target/arm/arch_dump.o CC aarch64-softmmu/target/arm/monitor.o CC aarch64-softmmu/target/arm/kvm-stub.o CC aarch64-softmmu/target/arm/translate.o LINK x86_64-softmmu/qemu-system-x86_64 CC aarch64-softmmu/target/arm/op_helper.o CC aarch64-softmmu/target/arm/helper.o CC aarch64-softmmu/target/arm/cpu.o CC aarch64-softmmu/target/arm/neon_helper.o CC aarch64-softmmu/target/arm/iwmmxt_helper.o CC aarch64-softmmu/target/arm/gdbstub.o CC aarch64-softmmu/target/arm/cpu64.o CC aarch64-softmmu/target/arm/translate-a64.o CC aarch64-softmmu/target/arm/helper-a64.o CC aarch64-softmmu/target/arm/gdbstub64.o CC aarch64-softmmu/target/arm/crypto_helper.o CC aarch64-softmmu/target/arm/arm-powerctl.o GEN trace/generated-helpers.c CC aarch64-softmmu/trace/control-target.o CC aarch64-softmmu/gdbstub-xml.o CC aarch64-softmmu/trace/generated-helpers.o /tmp/qemu-test/src/target/arm/translate-a64.c: In function ‘handle_shri_with_rndacc’: /tmp/qemu-test/src/target/arm/translate-a64.c:6355: warning: ‘tcg_src_hi’ may be used uninitialized in this function /tmp/qemu-test/src/target/arm/translate-a64.c: In function ‘disas_simd_scalar_two_reg_misc’: /tmp/qemu-test/src/target/arm/translate-a64.c:8082: warning: ‘rmode’ may be used uninitialized in this function LINK aarch64-softmmu/qemu-system-aarch64 TEST tests/qapi-schema/alternate-any.out TEST tests/qapi-schema/alternate-array.out TEST tests/qapi-schema/alternate-base.out TEST tests/qapi-schema/alternate-clash.out TEST tests/qapi-schema/alternate-conflict-dict.out TEST tests/qapi-schema/alternate-conflict-string.out TEST tests/qapi-schema/alternate-empty.out TEST tests/qapi-schema/alternate-nested.out TEST tests/qapi-schema/alternate-unknown.out TEST tests/qapi-schema/args-alternate.out TEST tests/qapi-schema/args-array-unknown.out TEST tests/qapi-schema/args-any.out TEST tests/qapi-schema/args-bad-boxed.out TEST tests/qapi-schema/args-array-empty.out TEST tests/qapi-schema/args-boxed-anon.out TEST tests/qapi-schema/args-boxed-empty.out TEST tests/qapi-schema/args-boxed-string.out TEST tests/qapi-schema/args-int.out TEST tests/qapi-schema/args-invalid.out TEST tests/qapi-schema/args-member-array-bad.out TEST tests/qapi-schema/args-member-case.out TEST tests/qapi-schema/args-member-unknown.out TEST tests/qapi-schema/args-name-clash.out TEST tests/qapi-schema/args-union.out TEST tests/qapi-schema/args-unknown.out TEST tests/qapi-schema/bad-base.out TEST tests/qapi-schema/bad-data.out TEST tests/qapi-schema/bad-ident.out TEST tests/qapi-schema/bad-type-bool.out TEST tests/qapi-schema/bad-type-dict.out TEST tests/qapi-schema/bad-type-int.out TEST tests/qapi-schema/base-cycle-direct.out TEST tests/qapi-schema/base-cycle-indirect.out TEST tests/qapi-schema/command-int.out TEST tests/qapi-schema/comments.out TEST tests/qapi-schema/doc-bad-args.out TEST tests/qapi-schema/doc-bad-symbol.out TEST tests/qapi-schema/doc-duplicated-arg.out TEST tests/qapi-schema/doc-duplicated-return.out TEST tests/qapi-schema/doc-duplicated-since.out TEST tests/qapi-schema/doc-empty-arg.out TEST tests/qapi-schema/doc-empty-symbol.out TEST tests/qapi-schema/doc-empty-section.out TEST tests/qapi-schema/doc-interleaved-section.out TEST tests/qapi-schema/doc-invalid-end.out TEST tests/qapi-schema/doc-invalid-return.out TEST tests/qapi-schema/doc-invalid-end2.out TEST tests/qapi-schema/doc-invalid-section.out TEST tests/qapi-schema/doc-invalid-start.out TEST tests/qapi-schema/doc-missing-colon.out TEST tests/qapi-schema/doc-missing-expr.out TEST tests/qapi-schema/doc-missing-space.out TEST tests/qapi-schema/doc-optional.out TEST tests/qapi-schema/double-data.out TEST tests/qapi-schema/double-type.out TEST tests/qapi-schema/duplicate-key.out TEST tests/qapi-schema/empty.out TEST tests/qapi-schema/enum-bad-name.out TEST tests/qapi-schema/enum-bad-prefix.out TEST tests/qapi-schema/enum-clash-member.out TEST tests/qapi-schema/enum-dict-member.out TEST tests/qapi-schema/enum-int-member.out TEST tests/qapi-schema/enum-missing-data.out TEST tests/qapi-schema/enum-member-case.out TEST tests/qapi-schema/enum-wrong-data.out TEST tests/qapi-schema/escape-outside-string.out TEST tests/qapi-schema/escape-too-big.out TEST tests/qapi-schema/escape-too-short.out TEST tests/qapi-schema/event-boxed-empty.out TEST tests/qapi-schema/event-case.out TEST tests/qapi-schema/event-nest-struct.out TEST tests/qapi-schema/flat-union-array-branch.out TEST tests/qapi-schema/flat-union-bad-base.out TEST tests/qapi-schema/flat-union-bad-discriminator.out TEST tests/qapi-schema/flat-union-base-union.out TEST tests/qapi-schema/flat-union-clash-member.out TEST tests/qapi-schema/flat-union-base-any.out TEST tests/qapi-schema/flat-union-empty.out TEST tests/qapi-schema/flat-union-incomplete-branch.out TEST tests/qapi-schema/flat-union-inline.out TEST tests/qapi-schema/flat-union-int-branch.out TEST tests/qapi-schema/flat-union-invalid-branch-key.out TEST tests/qapi-schema/flat-union-invalid-discriminator.out TEST tests/qapi-schema/flat-union-no-base.out TEST tests/qapi-schema/flat-union-optional-discriminator.out TEST tests/qapi-schema/flat-union-string-discriminator.out TEST tests/qapi-schema/funny-char.out TEST tests/qapi-schema/ident-with-escape.out TEST tests/qapi-schema/include-before-err.out TEST tests/qapi-schema/include-cycle.out TEST tests/qapi-schema/include-format-err.out TEST tests/qapi-schema/include-nested-err.out TEST tests/qapi-schema/include-non-file.out TEST tests/qapi-schema/include-no-file.out TEST tests/qapi-schema/include-relpath.out TEST tests/qapi-schema/include-repetition.out TEST tests/qapi-schema/include-self-cycle.out TEST tests/qapi-schema/include-simple.out TEST tests/qapi-schema/leading-comma-list.out TEST tests/qapi-schema/indented-expr.out TEST tests/qapi-schema/leading-comma-object.out TEST tests/qapi-schema/missing-colon.out TEST tests/qapi-schema/missing-comma-list.out TEST tests/qapi-schema/missing-comma-object.out TEST tests/qapi-schema/missing-type.out TEST tests/qapi-schema/nested-struct-data.out TEST tests/qapi-schema/non-objects.out TEST tests/qapi-schema/qapi-schema-test.out TEST tests/qapi-schema/quoted-structural-chars.out TEST tests/qapi-schema/redefined-builtin.out TEST tests/qapi-schema/redefined-command.out TEST tests/qapi-schema/redefined-event.out TEST tests/qapi-schema/redefined-type.out TEST tests/qapi-schema/reserved-command-q.out TEST tests/qapi-schema/reserved-enum-q.out TEST tests/qapi-schema/reserved-member-has.out TEST tests/qapi-schema/reserved-member-q.out TEST tests/qapi-schema/reserved-member-u.out TEST tests/qapi-schema/reserved-member-underscore.out TEST tests/qapi-schema/reserved-type-kind.out Files /tmp/qemu-test/src/tests/qapi-schema/qapi-schema-test.out and tests/qapi-schema/qapi-schema-test.test.out differ make: *** [check-tests/qapi-schema/qapi-schema-test.json] Error 1 make: *** Waiting for unfinished jobs.... TEST tests/qapi-schema/reserved-type-list.out make[1]: *** [docker-run] Error 2 make[1]: Leaving directory `/var/tmp/patchew-tester-tmp-fi8frq6v/src' make: *** [docker-run-test-quick@centos6] Error 2 === OUTPUT END === Test command exited with code: 2 --- Email generated automatically by Patchew [http://patchew.org/]. Please send your feedback to patchew-devel@freelists.org ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED 2017-02-21 10:42 [Qemu-devel] [PATCH 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED Paolo Bonzini ` (4 preceding siblings ...) 2017-02-21 10:52 ` no-reply @ 2017-02-21 11:02 ` no-reply 5 siblings, 0 replies; 22+ messages in thread From: no-reply @ 2017-02-21 11:02 UTC (permalink / raw) To: pbonzini; +Cc: famz, qemu-devel, den, anton.nefedov Hi, This series failed build test on s390x host. Please find the details below. Type: series Subject: [Qemu-devel] [PATCH 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED Message-id: 20170221104256.5153-1-pbonzini@redhat.com === TEST SCRIPT BEGIN === #!/bin/bash # Testing script will be invoked under the git checkout with # HEAD pointing to a commit that has the patches applied on top of "base" # branch set -e echo "=== ENV ===" env echo "=== PACKAGES ===" rpm -qa echo "=== TEST BEGIN ===" CC=$HOME/bin/cc INSTALL=$PWD/install BUILD=/var/tmp/patchew-qemu-build echo -n "Using CC: " realpath $CC test -e $BUILD && rm -rf $BUILD mkdir -p $BUILD $INSTALL SRC=$PWD cd $BUILD $SRC/configure --cc=$CC --prefix=$INSTALL make -j4 make check -j4 make install === TEST SCRIPT END === Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384 From https://github.com/patchew-project/qemu - [tag update] patchew/1487669841-13668-1-git-send-email-kraxel@redhat.com -> patchew/1487669841-13668-1-git-send-email-kraxel@redhat.com * [new tag] patchew/20170221104256.5153-1-pbonzini@redhat.com -> patchew/20170221104256.5153-1-pbonzini@redhat.com Switched to a new branch 'test' 70b329a vl: pass CPUState to qemu_system_guest_panicked e15b95f cpu: implement get_crash_info through QOM properties b48c439 qom-qobject: introduce object_property_{g, s}et_ptr === OUTPUT BEGIN === === ENV === XDG_SESSION_ID=29861 SHELL=/bin/sh USER=fam PATCHEW=/home/fam/patchew/patchew-cli -s http://patchew.org --nodebug PATH=/usr/bin:/bin PWD=/var/tmp/patchew-tester-tmp-rfll8e28/src LANG=en_US.UTF-8 HOME=/home/fam SHLVL=2 LOGNAME=fam DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1012/bus XDG_RUNTIME_DIR=/run/user/1012 _=/usr/bin/env === PACKAGES === gpg-pubkey-873529b8-54e386ff xz-libs-5.2.2-2.fc24.s390x libacl-2.2.52-11.fc24.s390x libxshmfence-1.2-3.fc24.s390x cdparanoia-libs-10.2-21.fc24.s390x ustr-1.0.4-21.fc24.s390x giflib-4.1.6-15.fc24.s390x libusb-0.1.5-7.fc24.s390x trousers-lib-0.3.13-6.fc24.s390x readline-devel-6.3-8.fc24.s390x python-srpm-macros-3-10.fc25.noarch ncurses-base-6.0-6.20160709.fc25.noarch gmp-6.1.1-1.fc25.s390x chkconfig-1.8-1.fc25.s390x libidn-1.33-1.fc25.s390x file-5.28-4.fc25.s390x slang-2.3.0-7.fc25.s390x avahi-libs-0.6.32-4.fc25.s390x libsemanage-2.5-8.fc25.s390x perl-Unicode-Normalize-1.25-365.fc25.s390x perl-libnet-3.10-1.fc25.noarch perl-Thread-Queue-3.11-1.fc25.noarch perl-podlators-4.09-1.fc25.noarch jasper-libs-1.900.13-1.fc25.s390x graphite2-1.3.6-1.fc25.s390x libblkid-2.28.2-1.fc25.s390x pkgconfig-0.29.1-1.fc25.s390x dbus-python-1.2.4-2.fc25.s390x alsa-lib-1.1.1-2.fc25.s390x libgnome-keyring-3.12.0-7.fc25.s390x yum-metadata-parser-1.1.4-17.fc25.s390x python3-3.5.2-4.fc25.s390x python3-slip-dbus-0.6.4-4.fc25.noarch python2-cssselect-0.9.2-1.fc25.noarch python-backports-1.0-8.fc25.s390x python-magic-5.28-4.fc25.noarch python-pycparser-2.14-7.fc25.noarch python-fedora-0.8.0-2.fc25.noarch createrepo_c-libs-0.10.0-6.fc25.s390x initscripts-9.69-1.fc25.s390x plymouth-scripts-0.9.3-0.6.20160620git0e65b86c.fc25.s390x cronie-1.5.1-2.fc25.s390x python2-librepo-1.7.18-3.fc25.s390x wget-1.18-2.fc25.s390x python3-dnf-plugins-core-0.1.21-4.fc25.noarch at-spi2-core-2.22.0-1.fc25.s390x libXv-1.0.11-1.fc25.s390x dhcp-client-4.3.5-1.fc25.s390x python2-dnf-plugins-core-0.1.21-4.fc25.noarch parted-3.2-21.fc25.s390x python2-ndg_httpsclient-0.4.0-4.fc25.noarch bash-completion-2.4-1.fc25.noarch btrfs-progs-4.6.1-1.fc25.s390x texinfo-6.1-3.fc25.s390x perl-Filter-1.55-366.fc25.s390x flex-2.6.0-3.fc25.s390x libgcc-6.3.1-1.fc25.s390x glib2-2.50.2-1.fc25.s390x dbus-libs-1.11.8-1.fc25.s390x libgomp-6.3.1-1.fc25.s390x colord-libs-1.3.4-1.fc25.s390x perl-Encode-2.88-5.fc25.s390x gstreamer1-1.10.2-1.fc25.s390x cracklib-2.9.6-4.fc25.s390x rpm-build-libs-4.13.0-6.fc25.s390x libobjc-6.3.1-1.fc25.s390x pcre-devel-8.40-1.fc25.s390x mariadb-config-10.1.20-1.fc25.s390x gcc-6.3.1-1.fc25.s390x mesa-libGL-13.0.3-1.fc25.s390x python3-dnf-plugin-system-upgrade-0.7.1-4.fc25.noarch bind-libs-9.10.4-4.P5.fc25.s390x python-osbs-client-0.33-3.fc25.noarch NetworkManager-1.4.4-3.fc25.s390x audit-2.7.1-1.fc25.s390x glibc-static-2.24-4.fc25.s390x perl-Pod-Simple-3.35-1.fc25.noarch gdb-7.12-36.fc25.s390x python2-simplejson-3.10.0-1.fc25.s390x python3-sssdconfig-1.14.2-2.fc25.noarch texlive-lib-2016-30.20160520.fc25.s390x boost-random-1.60.0-10.fc25.s390x brltty-5.4-2.fc25.s390x libref_array-0.1.5-29.fc25.s390x librados2-10.2.4-2.fc25.s390x gnutls-dane-3.5.8-1.fc25.s390x systemtap-client-3.1-0.20160725git91bfb36.fc25.s390x libXrender-devel-0.9.10-1.fc25.s390x libXi-devel-1.7.8-2.fc25.s390x texlive-pdftex-doc-svn41149-30.fc25.noarch tcp_wrappers-7.6-83.fc25.s390x javapackages-tools-4.7.0-6.1.fc25.noarch texlive-kpathsea-bin-svn40473-30.20160520.fc25.s390x texlive-url-svn32528.3.4-30.fc25.noarch texlive-latex-fonts-svn28888.0-30.fc25.noarch texlive-mptopdf-bin-svn18674.0-30.20160520.fc25.noarch texlive-underscore-svn18261.0-30.fc25.noarch texlive-subfig-svn15878.1.3-30.fc25.noarch texlive-dvipdfmx-def-svn40328-30.fc25.noarch texlive-plain-svn40274-30.fc25.noarch texlive-texlive-scripts-svn41433-30.fc25.noarch texlive-fancyref-svn15878.0.9c-30.fc25.noarch texlive-csquotes-svn39538-30.fc25.noarch texlive-pxfonts-svn15878.0-30.fc25.noarch texlive-cite-svn36428.5.5-30.fc25.noarch texlive-section-svn20180.0-30.fc25.noarch texlive-pslatex-svn16416.0-30.fc25.noarch texlive-tex-gyre-math-svn41264-30.fc25.noarch texlive-knuth-local-svn38627-30.fc25.noarch texlive-type1cm-svn21820.0-30.fc25.noarch texlive-finstrut-svn21719.0.5-30.fc25.noarch texlive-ucharcat-svn38907-30.fc25.noarch texlive-environ-svn33821.0.3-30.fc25.noarch texlive-eso-pic-svn37925.2.0g-30.fc25.noarch texlive-filehook-svn24280.0.5d-30.fc25.noarch texlive-luatexbase-svn38550-30.fc25.noarch texlive-pst-text-svn15878.1.00-30.fc25.noarch texlive-pst-tree-svn24142.1.12-30.fc25.noarch texlive-latex-bin-bin-svn14050.0-30.20160520.fc25.noarch texlive-metalogo-svn18611.0.12-30.fc25.noarch texlive-cm-super-svn15878.0-30.fc25.noarch texlive-xetex-svn41438-30.fc25.noarch keyutils-1.5.9-8.fc24.s390x libcephfs_jni1-10.2.4-2.fc25.s390x libcom_err-devel-1.43.3-1.fc25.s390x mesa-libGLES-devel-13.0.3-1.fc25.s390x graphite2-devel-1.3.6-1.fc25.s390x nettle-devel-3.3-1.fc25.s390x lzo-minilzo-2.08-8.fc24.s390x bzip2-devel-1.0.6-21.fc25.s390x libusbx-devel-1.0.21-1.fc25.s390x SDL2-devel-2.0.5-2.fc25.s390x virglrenderer-devel-0.5.0-1.20160411git61846f92f.fc25.s390x glib2-static-2.50.2-1.fc25.s390x mesa-libgbm-devel-13.0.3-1.fc25.s390x acpica-tools-20160831-1.fc25.s390x gdk-pixbuf2-2.36.4-1.fc25.s390x nss-softokn-3.28.1-1.0.fc25.s390x python3-dnf-1.1.10-5.fc25.noarch python-gluster-3.9.1-1.fc25.noarch perl-IO-1.36-382.fc25.s390x glusterfs-devel-3.9.1-1.fc25.s390x gtk3-3.22.7-1.fc25.s390x vim-enhanced-8.0.206-1.fc25.s390x nss-tools-3.28.1-1.3.fc25.s390x libmicrohttpd-0.9.52-1.fc25.s390x gpg-pubkey-a29cb19c-53bcbba6 libaio-0.3.110-6.fc24.s390x m4-1.4.17-9.fc24.s390x libfontenc-1.1.3-3.fc24.s390x lzo-2.08-8.fc24.s390x isl-0.14-5.fc24.s390x libXau-1.0.8-6.fc24.s390x liblockfile-1.09-4.fc24.s390x linux-atm-libs-2.5.1-14.fc24.s390x sg3_utils-1.41-3.fc24.s390x libXext-1.3.3-4.fc24.s390x libXinerama-1.1.3-6.fc24.s390x libXxf86vm-1.1.4-3.fc24.s390x libXft-2.3.2-4.fc24.s390x ykpers-1.17.3-2.fc24.s390x bison-3.0.4-4.fc24.s390x perl-srpm-macros-1-20.fc25.noarch gawk-4.1.3-8.fc25.s390x tcp_wrappers-libs-7.6-83.fc25.s390x libwayland-client-1.12.0-1.fc25.s390x iptables-1.6.0-2.fc25.s390x perl-Exporter-5.72-366.fc25.noarch perl-Text-Tabs+Wrap-2013.0523-365.fc25.noarch perl-Error-0.17024-7.fc25.noarch perl-Term-Cap-1.17-365.fc25.noarch perl-version-0.99.17-1.fc25.s390x perl-Pod-Usage-1.69-1.fc25.noarch fftw-libs-double-3.3.5-3.fc25.s390x device-mapper-persistent-data-0.6.3-1.fc25.s390x krb5-libs-1.14.4-4.fc25.s390x system-python-libs-3.5.2-4.fc25.s390x net-snmp-libs-5.7.3-13.fc25.s390x libssh2-1.8.0-1.fc25.s390x libgusb-0.2.9-1.fc25.s390x ModemManager-glib-1.6.4-1.fc25.s390x python3-six-1.10.0-3.fc25.noarch newt-python3-0.52.19-2.fc25.s390x python3-pysocks-1.5.6-5.fc25.noarch python-chardet-2.3.0-1.fc25.noarch python-munch-2.0.4-3.fc25.noarch python2-cffi-1.7.0-2.fc25.s390x python-bugzilla-1.2.2-4.fc25.noarch openldap-2.4.44-2.fc25.s390x libedit-3.1-16.20160618cvs.fc25.s390x gc-devel-7.4.4-1.fc25.s390x python-pycurl-7.43.0-4.fc25.s390x createrepo_c-0.10.0-6.fc25.s390x plymouth-0.9.3-0.6.20160620git0e65b86c.fc25.s390x device-mapper-multipath-libs-0.4.9-83.fc25.s390x ebtables-2.0.10-21.fc25.s390x python3-librepo-1.7.18-3.fc25.s390x libwmf-lite-0.2.8.4-49.fc25.s390x net-snmp-5.7.3-13.fc25.s390x yum-3.4.3-510.fc25.noarch dnf-plugins-core-0.1.21-4.fc25.noarch at-spi2-atk-2.22.0-1.fc25.s390x ImageMagick-libs-6.9.3.0-3.fc25.s390x dhcp-common-4.3.5-1.fc25.noarch kernel-modules-4.8.8-300.fc25.s390x dracut-config-rescue-044-78.fc25.s390x sendmail-8.15.2-7.fc25.s390x avahi-autoipd-0.6.32-4.fc25.s390x teamd-1.26-1.fc25.s390x kernel-devel-4.8.8-300.fc25.s390x mozjs17-17.0.0-16.fc25.s390x libselinux-2.5-13.fc25.s390x libcrypt-nss-2.24-4.fc25.s390x systemd-libs-231-12.fc25.s390x libgo-6.3.1-1.fc25.s390x libgo-devel-6.3.1-1.fc25.s390x NetworkManager-libnm-1.4.4-3.fc25.s390x cpp-6.3.1-1.fc25.s390x rpm-plugin-selinux-4.13.0-6.fc25.s390x pcre-utf32-8.40-1.fc25.s390x packagedb-cli-2.14-1.fc25.noarch python2-pyparsing-2.1.10-1.fc25.noarch glibc-devel-2.24-4.fc25.s390x libdrm-2.4.74-1.fc25.s390x kernel-modules-4.9.3-200.fc25.s390x cairo-gobject-1.14.8-1.fc25.s390x bind99-license-9.9.9-4.P5.fc25.noarch pyrpkg-1.47-5.fc25.noarch emacs-25.1-3.fc25.s390x firewalld-0.4.4.2-2.fc25.noarch pyparsing-2.1.10-1.fc25.noarch kernel-devel-4.9.3-200.fc25.s390x libproxy-0.4.14-1.fc25.s390x ethtool-4.8-1.fc25.s390x python3-pyparsing-2.1.10-1.fc25.noarch xorg-x11-proto-devel-7.7-20.fc25.noarch brlapi-0.6.5-2.fc25.s390x libcollection-0.7.0-29.fc25.s390x librados-devel-10.2.4-2.fc25.s390x libcephfs-devel-10.2.4-2.fc25.s390x libXdamage-devel-1.1.4-8.fc24.s390x libXinerama-devel-1.1.3-6.fc24.s390x quota-4.03-7.fc25.s390x texlive-texlive-common-doc-svn40682-30.fc25.noarch texlive-metafont-bin-svn40987-30.20160520.fc25.s390x texlive-ifluatex-svn41346-30.fc25.noarch texlive-dvips-bin-svn40987-30.20160520.fc25.s390x texlive-marvosym-svn29349.2.2a-30.fc25.noarch texlive-graphics-cfg-svn40269-30.fc25.noarch texlive-carlisle-svn18258.0-30.fc25.noarch texlive-glyphlist-svn28576.0-30.fc25.noarch texlive-tex-bin-svn40987-30.20160520.fc25.s390x texlive-texlive-scripts-bin-svn29741.0-30.20160520.fc25.noarch texlive-mathtools-svn38833-30.fc25.noarch texlive-euro-svn22191.1.1-30.fc25.noarch texlive-palatino-svn31835.0-30.fc25.noarch texlive-anysize-svn15878.0-30.fc25.noarch texlive-sansmath-svn17997.1.1-30.fc25.noarch texlive-mfnfss-svn19410.0-30.fc25.noarch texlive-mathpazo-svn15878.1.003-30.fc25.noarch texlive-knuth-lib-svn35820.0-30.fc25.noarch texlive-updmap-map-svn41159-30.fc25.noarch texlive-beton-svn15878.0-30.fc25.noarch texlive-xetexconfig-svn41133-30.fc25.noarch texlive-trimspaces-svn15878.1.1-30.fc25.noarch texlive-memoir-svn41203-30.fc25.noarch texlive-latex-svn40218-30.fc25.noarch texlive-lualatex-math-svn40621-30.fc25.noarch texlive-pst-grad-svn15878.1.06-30.fc25.noarch texlive-pst-tools-svn34067.0.05-30.fc25.noarch texlive-amscls-svn36804.0-30.fc25.noarch texlive-tex-gyre-svn18651.2.004-30.fc25.noarch texlive-ltxmisc-svn21927.0-30.fc25.noarch texlive-xetex-bin-svn41091-30.20160520.fc25.s390x lua-posix-33.3.1-3.fc25.s390x gssproxy-0.5.1-3.fc25.s390x java-1.8.0-openjdk-1.8.0.111-5.b16.fc25.s390x libverto-devel-0.2.6-6.fc24.s390x mesa-libGLES-13.0.3-1.fc25.s390x p11-kit-devel-0.23.2-2.fc24.s390x snappy-1.1.3-2.fc24.s390x gnutls-devel-3.5.8-1.fc25.s390x cairo-gobject-devel-1.14.8-1.fc25.s390x usbredir-devel-0.7.1-2.fc24.s390x systemtap-3.1-0.20160725git91bfb36.fc25.s390x bluez-libs-devel-5.43-1.fc25.s390x libcurl-devel-7.51.0-4.fc25.s390x cyrus-sasl-devel-2.1.26-26.2.fc24.s390x python-libs-2.7.13-1.fc25.s390x nss-sysinit-3.28.1-1.3.fc25.s390x dnf-1.1.10-5.fc25.noarch glusterfs-extra-xlators-3.9.1-1.fc25.s390x perl-5.24.1-382.fc25.s390x linux-firmware-20161205-69.git91ddce49.fc25.noarch libX11-devel-1.6.4-4.fc25.s390x kernel-devel-4.9.5-200.fc25.s390x python-devel-2.7.13-1.fc25.s390x kernel-headers-4.9.5-200.fc25.s390x gpg-pubkey-efe550f5-5220ba41 python-async-0.6.1-9.fc22.s390x gpg-pubkey-81b46521-55b3ca9a dejavu-sans-mono-fonts-2.35-3.fc24.noarch filesystem-3.2-37.fc24.s390x popt-1.16-7.fc24.s390x libffi-3.1-9.fc24.s390x cyrus-sasl-lib-2.1.26-26.2.fc24.s390x xz-5.2.2-2.fc24.s390x keyutils-libs-1.5.9-8.fc24.s390x libnfnetlink-1.0.1-8.fc24.s390x libnetfilter_conntrack-1.0.4-6.fc24.s390x libtheora-1.1.1-14.fc24.s390x xml-common-0.6.3-44.fc24.noarch autoconf-2.69-22.fc24.noarch libpipeline-1.4.1-2.fc24.s390x libXt-1.1.5-3.fc24.s390x kbd-legacy-2.0.3-3.fc24.noarch ghostscript-fonts-5.50-35.fc24.noarch libcroco-0.6.11-2.fc24.s390x pinentry-0.9.7-2.fc24.s390x libXevie-1.0.3-11.fc24.s390x pth-2.0.7-27.fc24.s390x python2-rpm-macros-3-10.fc25.noarch libsepol-2.5-10.fc25.s390x libcap-2.25-2.fc25.s390x sqlite-libs-3.14.2-1.fc25.s390x mpfr-3.1.5-1.fc25.s390x libxcb-1.12-1.fc25.s390x libicu-57.1-4.fc25.s390x perl-Carp-1.40-365.fc25.noarch perl-IO-Socket-IP-0.38-1.fc25.noarch libmnl-1.0.4-1.fc25.s390x perl-Unicode-EastAsianWidth-1.33-8.fc25.noarch perl-Getopt-Long-2.49.1-1.fc25.noarch libwayland-cursor-1.12.0-1.fc25.s390x coreutils-common-8.25-15.fc25.s390x libmount-2.28.2-1.fc25.s390x python2-decorator-4.0.10-3.fc25.noarch avahi-glib-0.6.32-4.fc25.s390x python3-pip-8.1.2-2.fc25.noarch python3-libcomps-0.1.7-5.fc25.s390x python-slip-0.6.4-4.fc25.noarch python-krbV-1.0.90-12.fc25.s390x python2-libcomps-0.1.7-5.fc25.s390x python2-urllib3-1.15.1-3.fc25.noarch fipscheck-1.4.1-11.fc25.s390x gc-7.4.4-1.fc25.s390x libndp-1.6-1.fc25.s390x libsolv-0.6.24-1.fc25.s390x gnupg2-2.1.13-2.fc25.s390x geoclue2-2.4.4-1.fc25.s390x s390utils-cmsfs-1.36.0-1.fc25.s390x libXfixes-5.0.3-1.fc25.s390x libXi-1.7.8-2.fc25.s390x adwaita-icon-theme-3.22.0-1.fc25.noarch dconf-0.26.0-1.fc25.s390x ncurses-devel-6.0-6.20160709.fc25.s390x newt-python-0.52.19-2.fc25.s390x perl-Test-Harness-3.36-367.fc25.noarch valgrind-3.12.0-1.fc25.s390x dejagnu-1.6-1.fc25.noarch audit-libs-2.7.1-1.fc25.s390x libstdc++-devel-6.3.1-1.fc25.s390x emacs-filesystem-25.1-3.fc25.noarch libdb-utils-5.3.28-16.fc25.s390x libidn2-0.11-1.fc25.s390x python3-rpm-4.13.0-6.fc25.s390x gnutls-3.5.8-1.fc25.s390x python-beautifulsoup4-4.5.3-1.fc25.noarch qt5-srpm-macros-5.7.1-1.fc25.noarch elfutils-default-yama-scope-0.168-1.fc25.noarch device-mapper-1.02.136-3.fc25.s390x device-mapper-event-1.02.136-3.fc25.s390x systemd-container-231-12.fc25.s390x python3-distro-1.0.1-2.fc25.noarch fedpkg-1.26-4.fc25.noarch gstreamer1-plugins-base-1.10.2-1.fc25.s390x subversion-1.9.5-1.fc25.s390x perl-Module-CoreList-5.20170115-1.fc25.noarch perl-Class-Inspector-1.31-2.fc25.noarch libtool-ltdl-2.4.6-13.fc25.s390x python2-sssdconfig-1.14.2-2.fc25.noarch glib2-devel-2.50.2-1.fc25.s390x poppler-0.45.0-2.fc25.s390x libbasicobjects-0.1.1-29.fc25.s390x libevent-2.0.22-1.fc25.s390x libradosstriper1-10.2.4-2.fc25.s390x atk-devel-2.22.0-1.fc25.s390x libXxf86vm-devel-1.1.4-3.fc24.s390x libev-4.24-1.fc25.s390x gsm-1.0.16-1.fc25.s390x libnfsidmap-0.27-0.fc25.s390x zziplib-0.13.62-7.fc24.s390x texlive-metafont-svn40793-30.fc25.noarch texlive-booktabs-svn40846-30.fc25.noarch texlive-dvips-svn41149-30.fc25.noarch texlive-zapfding-svn31835.0-30.fc25.noarch texlive-graphics-svn41015-30.fc25.noarch texlive-latexconfig-svn40274-30.fc25.noarch texlive-gsftopk-bin-svn40473-30.20160520.fc25.s390x texlive-tex-svn40793-30.fc25.noarch texlive-xdvi-bin-svn40750-30.20160520.fc25.s390x texlive-qstest-svn15878.0-30.fc25.noarch texlive-avantgar-svn31835.0-30.fc25.noarch texlive-ncntrsbk-svn31835.0-30.fc25.noarch texlive-cm-svn32865.0-30.fc25.noarch texlive-rcs-svn15878.0-30.fc25.noarch texlive-fix2col-svn38770-30.fc25.noarch texlive-lm-math-svn36915.1.959-30.fc25.noarch texlive-hyphen-base-svn41138-30.fc25.noarch texlive-unicode-data-svn39808-30.fc25.noarch texlive-luatex-svn40963-30.fc25.noarch texlive-xetex-def-svn40327-30.fc25.noarch texlive-varwidth-svn24104.0.92-30.fc25.noarch texlive-l3kernel-svn41246-30.fc25.noarch texlive-hyperref-svn41396-30.fc25.noarch texlive-unicode-math-svn38462-30.fc25.noarch texlive-fancyvrb-svn18492.2.8-30.fc25.noarch texlive-pst-plot-svn41242-30.fc25.noarch texlive-rotating-svn16832.2.16b-30.fc25.noarch texlive-pdfpages-svn40638-30.fc25.noarch texlive-ae-svn15878.1.4-30.fc25.noarch libpaper-1.1.24-12.fc24.s390x texlive-collection-latexrecommended-svn35765.0-30.20160520.fc25.noarch libini_config-1.3.0-29.fc25.s390x xorg-x11-fonts-Type1-7.5-16.fc24.noarch pcre2-devel-10.22-8.fc25.s390x gnutls-c++-3.5.8-1.fc25.s390x systemtap-devel-3.1-0.20160725git91bfb36.fc25.s390x libtasn1-devel-4.10-1.fc25.s390x pango-devel-1.40.3-1.fc25.s390x vte291-devel-0.46.1-1.fc25.s390x snappy-devel-1.1.3-2.fc24.s390x brlapi-devel-0.6.5-2.fc25.s390x man-pages-4.06-3.fc25.noarch libcap-ng-devel-0.7.8-1.fc25.s390x glusterfs-3.9.1-1.fc25.s390x nss-util-devel-3.28.1-1.0.fc25.s390x dnf-conf-1.1.10-5.fc25.noarch libxkbcommon-devel-0.7.1-1.fc25.s390x perl-macros-5.24.1-382.fc25.s390x rpcbind-0.2.4-2.fc25.s390x pulseaudio-libs-10.0-2.fc25.s390x kernel-4.9.5-200.fc25.s390x libnl3-cli-3.2.29-2.fc25.s390x tzdata-2016j-2.fc25.noarch gpg-pubkey-34ec9cba-54e38751 gpg-pubkey-030d5aed-55b577f0 basesystem-11-2.fc24.noarch libattr-2.4.47-16.fc24.s390x libmpc-1.0.2-5.fc24.s390x apr-util-1.5.4-3.fc24.s390x rsync-3.1.2-2.fc24.s390x libunistring-0.9.4-3.fc24.s390x jbigkit-libs-2.1-5.fc24.s390x pixman-0.34.0-2.fc24.s390x acl-2.2.52-11.fc24.s390x dwz-0.12-2.fc24.s390x expect-5.45-22.fc24.s390x libmodman-2.0.1-12.fc24.s390x libsigsegv-2.10-10.fc24.s390x libvisual-0.4.0-20.fc24.s390x fakeroot-libs-1.20.2-4.fc24.s390x m17n-lib-1.7.0-5.fc24.s390x libpcap-1.7.4-2.fc24.s390x libverto-0.2.6-6.fc24.s390x lsscsi-0.28-3.fc24.s390x setup-2.10.4-1.fc25.noarch rpmconf-base-1.0.18-2.fc25.noarch bash-4.3.43-4.fc25.s390x expat-2.2.0-1.fc25.s390x libxml2-2.9.3-4.fc25.s390x libgpg-error-1.24-1.fc25.s390x nspr-4.13.1-1.fc25.s390x libgcrypt-1.6.6-1.fc25.s390x file-libs-5.28-4.fc25.s390x findutils-4.6.0-8.fc25.s390x libjpeg-turbo-1.5.1-0.fc25.s390x kmod-23-1.fc25.s390x libassuan-2.4.3-1.fc25.s390x libusbx-1.0.21-1.fc25.s390x newt-0.52.19-2.fc25.s390x libxslt-1.1.28-13.fc25.s390x libmetalink-0.1.3-1.fc25.s390x perl-Socket-2.024-1.fc25.s390x perl-File-Path-2.12-365.fc25.noarch perl-MIME-Base64-3.15-365.fc25.s390x perl-HTTP-Tiny-0.070-1.fc25.noarch ncurses-6.0-6.20160709.fc25.s390x libwayland-server-1.12.0-1.fc25.s390x ipset-6.29-1.fc25.s390x perl-Text-Unidecode-1.27-3.fc25.noarch perl-Fedora-VSP-0.001-4.fc25.noarch perl-libintl-perl-1.26-1.fc25.s390x plymouth-core-libs-0.9.3-0.6.20160620git0e65b86c.fc25.s390x hunspell-1.4.1-1.fc25.s390x which-2.21-1.fc25.s390x coreutils-8.25-15.fc25.s390x python2-setuptools-25.1.1-1.fc25.noarch shadow-utils-4.2.1-11.fc25.s390x atk-2.22.0-1.fc25.s390x system-python-3.5.2-4.fc25.s390x pam-1.3.0-1.fc25.s390x python2-pyasn1-0.1.9-7.fc25.1.noarch harfbuzz-icu-1.3.2-1.fc25.s390x gsettings-desktop-schemas-3.22.0-1.fc25.s390x libsecret-0.18.5-2.fc25.s390x s390utils-iucvterm-1.36.0-1.fc25.s390x python3-setuptools-25.1.1-1.fc25.noarch python3-decorator-4.0.10-3.fc25.noarch python3-slip-0.6.4-4.fc25.noarch python3-magic-5.28-4.fc25.noarch python3-requests-2.10.0-4.fc25.noarch python3-systemd-232-1.fc25.s390x pyusb-1.0.0-2.fc25.noarch python-slip-dbus-0.6.4-4.fc25.noarch python-enum34-1.0.4-6.fc25.noarch python-lockfile-0.11.0-4.fc25.noarch python2-ply-3.8-2.fc25.noarch pyOpenSSL-16.0.0-2.fc25.noarch python2-requests-2.10.0-4.fc25.noarch pyxattr-0.5.3-8.fc25.s390x libarchive-3.2.2-1.fc25.s390x libkadm5-1.14.4-4.fc25.s390x dtc-1.4.2-1.fc25.s390x libbabeltrace-1.4.0-3.fc25.s390x guile-2.0.13-1.fc25.s390x libthai-0.1.25-1.fc25.s390x libnghttp2-1.13.0-2.fc25.s390x deltarpm-3.6-17.fc25.s390x python-urlgrabber-3.10.1-9.fc25.noarch iputils-20161105-1.fc25.s390x s390utils-mon_statd-1.36.0-1.fc25.s390x cryptsetup-libs-1.7.2-3.fc25.s390x device-mapper-multipath-0.4.9-83.fc25.s390x cronie-anacron-1.5.1-2.fc25.s390x ghostscript-core-9.20-5.fc25.s390x python3-pygpgme-0.3-18.fc25.s390x rest-0.8.0-1.fc25.s390x libreport-filesystem-2.8.0-1.fc25.s390x libXtst-1.2.3-1.fc25.s390x iso-codes-3.70-1.fc25.noarch ghc-srpm-macros-1.4.2-4.fc25.noarch adwaita-cursor-theme-3.22.0-1.fc25.noarch rpmdevtools-8.9-1.fc25.noarch kernel-4.8.8-300.fc25.s390x python-dnf-plugins-extras-migrate-0.0.12-4.fc25.noarch s390utils-1.36.0-1.fc25.s390x authconfig-6.2.10-14.fc25.s390x fedora-cert-0.6.0.1-1.fc25.noarch glibc-2.24-4.fc25.s390x elfutils-libelf-0.168-1.fc25.s390x libstdc++-6.3.1-1.fc25.s390x perl-Scalar-List-Utils-1.47-1.fc25.s390x gdb-headless-7.12-36.fc25.s390x bzip2-1.0.6-21.fc25.s390x bind-license-9.10.4-4.P5.fc25.noarch pcre-cpp-8.40-1.fc25.s390x perl-threads-2.12-1.fc25.s390x subversion-libs-1.9.5-1.fc25.s390x libss-1.43.3-1.fc25.s390x shared-mime-info-1.8-1.fc25.s390x libselinux-utils-2.5-13.fc25.s390x libgfortran-6.3.1-1.fc25.s390x rpm-4.13.0-6.fc25.s390x python2-rpm-4.13.0-6.fc25.s390x policycoreutils-2.5-19.fc25.s390x libtasn1-4.10-1.fc25.s390x mesa-libwayland-egl-13.0.3-1.fc25.s390x pigz-2.3.4-1.fc25.s390x koji-1.11.0-1.fc25.noarch python3-enchant-1.6.8-1.fc25.noarch mariadb-common-10.1.20-1.fc25.s390x firewalld-filesystem-0.4.4.2-2.fc25.noarch systemd-231-12.fc25.s390x device-mapper-libs-1.02.136-3.fc25.s390x systemd-udev-231-12.fc25.s390x dnf-plugin-system-upgrade-0.7.1-4.fc25.noarch mesa-libEGL-13.0.3-1.fc25.s390x dnsmasq-2.76-2.fc25.s390x distribution-gpg-keys-1.9-1.fc25.noarch bind-libs-lite-9.10.4-4.P5.fc25.s390x mock-1.3.3-1.fc25.noarch python2-dockerfile-parse-0.0.5-7.fc25.noarch fedora-packager-0.6.0.1-1.fc25.noarch openssl-1.0.2j-3.fc25.s390x lvm2-2.02.167-3.fc25.s390x systemd-bootchart-231-2.fc25.s390x gcc-c++-6.3.1-1.fc25.s390x texlive-base-2016-30.20160520.fc25.noarch boost-system-1.60.0-10.fc25.s390x pcre2-10.22-8.fc25.s390x libpng-devel-1.6.27-1.fc25.s390x perl-XML-Parser-2.44-5.fc25.s390x libtirpc-1.0.1-3.rc3.fc25.s390x lttng-ust-2.8.1-2.fc25.s390x libasyncns-0.8-10.fc24.s390x unbound-libs-1.5.10-1.fc25.s390x libradosstriper-devel-10.2.4-2.fc25.s390x systemtap-runtime-3.1-0.20160725git91bfb36.fc25.s390x libXau-devel-1.0.8-6.fc24.s390x libXfixes-devel-5.0.3-1.fc25.s390x mesa-libEGL-devel-13.0.3-1.fc25.s390x libXcomposite-devel-0.4.4-8.fc24.s390x libverto-libev-0.2.6-6.fc24.s390x texlive-kpathsea-doc-svn41139-30.fc25.noarch flac-libs-1.3.2-1.fc25.s390x quota-nls-4.03-7.fc25.noarch python3-html5lib-0.999-9.fc25.noarch python3-javapackages-4.7.0-6.1.fc25.noarch perl-Digest-1.17-366.fc25.noarch texlive-texlive.infra-svn41280-30.fc25.noarch texlive-tetex-svn41059-30.fc25.noarch texlive-amsfonts-svn29208.3.04-30.fc25.noarch texlive-etex-pkg-svn39355-30.fc25.noarch texlive-lm-svn28119.2.004-30.fc25.noarch texlive-fp-svn15878.0-30.fc25.noarch texlive-mptopdf-svn41282-30.fc25.noarch texlive-euler-svn17261.2.5-30.fc25.noarch texlive-setspace-svn24881.6.7a-30.fc25.noarch texlive-tools-svn40934-30.fc25.noarch texlive-colortbl-svn29803.v1.0a-30.fc25.noarch texlive-natbib-svn20668.8.31b-30.fc25.noarch texlive-bibtex-svn40768-30.fc25.noarch texlive-gsftopk-svn40768-30.fc25.noarch texlive-mfware-svn40768-30.fc25.noarch texlive-tex-ini-files-svn40533-30.fc25.noarch texlive-texconfig-bin-svn29741.0-30.20160520.fc25.noarch libXmu-1.1.2-4.fc24.s390x libXcursor-1.1.14-6.fc24.s390x kbd-misc-2.0.3-3.fc24.noarch libutempter-1.1.6-8.fc24.s390x python-kitchen-1.2.4-2.fc24.noarch polkit-libs-0.113-5.fc24.s390x libgudev-230-3.fc24.s390x popt-devel-1.16-7.fc24.s390x make-4.1-5.fc24.s390x fakeroot-1.20.2-4.fc24.s390x blktrace-1.1.0-3.fc24.s390x hicolor-icon-theme-0.15-3.fc24.noarch usermode-1.111-8.fc24.s390x kbd-2.0.3-3.fc24.s390x libaio-devel-0.3.110-6.fc24.s390x web-assets-filesystem-5-4.fc24.noarch perl-IO-Socket-SSL-2.038-1.fc25.noarch python-backports-ssl_match_hostname-3.5.0.1-3.fc25.noarch mc-4.8.18-2.fc25.s390x expat-devel-2.2.0-1.fc25.s390x automake-1.15-7.fc25.noarch perl-File-ShareDir-1.102-7.fc25.noarch lua-5.3.3-3.fc25.s390x tcl-8.6.6-1.fc25.s390x gcc-objc-6.3.1-1.fc25.s390x libselinux-devel-2.5-13.fc25.s390x e2fsprogs-1.43.3-1.fc25.s390x perl-Storable-2.56-367.fc25.s390x libstdc++-static-6.3.1-1.fc25.s390x perl-Time-Local-1.250-1.fc25.noarch libwebp-0.5.2-1.fc25.s390x xkeyboard-config-2.19-1.1.fc25.noarch python-firewall-0.4.4.2-2.fc25.noarch texlive-xdvi-svn40768-30.fc25.noarch texlive-wasy2-ps-svn35830.0-30.fc25.noarch texlive-ltabptch-svn17533.1.74d-30.fc25.noarch texlive-sauerj-svn15878.0-30.fc25.noarch texlive-bookman-svn31835.0-30.fc25.noarch texlive-courier-svn35058.0-30.fc25.noarch texlive-mflogo-font-svn36898.1.002-30.fc25.noarch texlive-rsfs-svn15878.0-30.fc25.noarch texlive-zapfchan-svn31835.0-30.fc25.noarch texlive-cmap-svn41168-30.fc25.noarch texlive-parskip-svn19963.2.0-30.fc25.noarch texlive-sepnum-svn20186.2.0-30.fc25.noarch texlive-fancyhdr-svn15878.3.1-30.fc25.noarch texlive-pspicture-svn15878.0-30.fc25.noarch texlive-fpl-svn15878.1.002-30.fc25.noarch texlive-utopia-svn15878.0-30.fc25.noarch texlive-hyph-utf8-svn41189-30.fc25.noarch texlive-lua-alt-getopt-svn29349.0.7.0-30.fc25.noarch texlive-texlive-msg-translations-svn41431-30.fc25.noarch texlive-parallel-svn15878.0-30.fc25.noarch texlive-luatex-bin-svn41091-30.20160520.fc25.s390x texlive-lineno-svn21442.4.41-30.fc25.noarch texlive-kastrup-svn15878.0-30.fc25.noarch texlive-chngcntr-svn17157.1.0a-30.fc25.noarch texlive-lualibs-svn40370-30.fc25.noarch texlive-xunicode-svn30466.0.981-30.fc25.noarch texlive-l3packages-svn41246-30.fc25.noarch texlive-pgf-svn40966-30.fc25.noarch texlive-koma-script-svn41508-30.fc25.noarch texlive-currfile-svn40725-30.fc25.noarch texlive-luaotfload-svn40902-30.fc25.noarch texlive-ifplatform-svn21156.0.4-30.fc25.noarch texlive-showexpl-svn32737.v0.3l-30.fc25.noarch texlive-pst-3d-svn17257.1.10-30.fc25.noarch texlive-pst-node-svn40743-30.fc25.noarch texlive-pstricks-add-svn40744-30.fc25.noarch texlive-pst-pdf-svn31660.1.1v-30.fc25.noarch texlive-latex-bin-svn41438-30.fc25.noarch texlive-powerdot-svn38984-30.fc25.noarch texlive-sansmathaccent-svn30187.0-30.fc25.noarch texlive-typehtml-svn17134.0-30.fc25.noarch texlive-ucs-svn35853.2.2-30.fc25.noarch teckit-2.5.1-15.fc24.s390x texlive-dvipdfmx-svn41149-30.fc25.noarch texlive-collection-latex-svn41011-30.20160520.fc25.noarch netpbm-10.76.00-2.fc25.s390x libpath_utils-0.2.1-29.fc25.s390x nfs-utils-1.3.4-1.rc3.fc25.s390x ttmkfdir-3.0.9-48.fc24.s390x libcephfs_jni-devel-10.2.4-2.fc25.s390x pcre2-utf16-10.22-8.fc25.s390x keyutils-libs-devel-1.5.9-8.fc24.s390x libicu-devel-57.1-4.fc25.s390x attr-2.4.47-16.fc24.s390x harfbuzz-devel-1.3.2-1.fc25.s390x libidn-devel-1.33-1.fc25.s390x usbredir-0.7.1-2.fc24.s390x libnfs-1.9.8-2.fc24.s390x SDL2-2.0.5-2.fc25.s390x freetype-devel-2.6.5-1.fc25.s390x cairo-devel-1.14.8-1.fc25.s390x libepoxy-devel-1.3.1-3.fc25.s390x libcacard-devel-2.5.2-2.fc24.s390x lzo-devel-2.08-8.fc24.s390x libssh2-devel-1.8.0-1.fc25.s390x pcre-static-8.40-1.fc25.s390x qemu-sanity-check-nodeps-1.1.5-5.fc24.s390x libcap-devel-2.25-2.fc25.s390x alsa-lib-devel-1.1.1-2.fc25.s390x nss-util-3.28.1-1.0.fc25.s390x glusterfs-client-xlators-3.9.1-1.fc25.s390x nss-softokn-freebl-3.28.1-1.0.fc25.s390x libnl3-3.2.29-2.fc25.s390x python3-hawkey-0.6.3-6.1.fc25.s390x git-core-doc-2.9.3-2.fc25.s390x glusterfs-fuse-3.9.1-1.fc25.s390x gdk-pixbuf2-devel-2.36.4-1.fc25.s390x perl-Errno-1.25-382.fc25.s390x git-2.9.3-2.fc25.s390x glusterfs-server-3.9.1-1.fc25.s390x kernel-modules-4.9.5-200.fc25.s390x pulseaudio-libs-glib2-10.0-2.fc25.s390x libpsl-0.17.0-1.fc25.s390x glusterfs-api-devel-3.9.1-1.fc25.s390x nss-devel-3.28.1-1.3.fc25.s390x wpa_supplicant-2.6-1.fc25.s390x xemacs-filesystem-21.5.34-19.20170114hgd0e8ec0fe015.fc25.noarch opus-1.1.3-2.fc25.s390x copy-jdk-configs-2.0-1.fc25.noarch gpg-pubkey-a0a7badb-52844296 fontpackages-filesystem-1.44-17.fc24.noarch readline-6.3-8.fc24.s390x cpio-2.12-3.fc24.s390x groff-base-1.22.3-8.fc24.s390x ilmbase-2.2.0-5.fc24.s390x p11-kit-trust-0.23.2-2.fc24.s390x OpenEXR-libs-2.2.0-5.fc24.s390x hesiod-3.2.1-6.fc24.s390x sysfsutils-2.1.0-19.fc24.s390x qrencode-libs-3.4.2-6.fc24.s390x GeoIP-1.6.9-2.fc24.s390x ocaml-srpm-macros-2-4.fc24.noarch libXcomposite-0.4.4-8.fc24.s390x procps-ng-3.3.10-11.fc24.s390x GConf2-3.2.6-16.fc24.s390x mailx-12.5-19.fc24.s390x xz-devel-5.2.2-2.fc24.s390x fedora-logos-22.0.0-3.fc24.s390x telnet-0.17-65.fc24.s390x gpg-pubkey-e372e838-56fd7943 fedora-repos-25-1.noarch ncurses-libs-6.0-6.20160709.fc25.s390x lua-libs-5.3.3-3.fc25.s390x kmod-libs-23-1.fc25.s390x libseccomp-2.3.1-1.fc25.s390x perl-parent-0.236-1.fc25.noarch libICE-1.0.9-5.fc25.s390x ipset-libs-6.29-1.fc25.s390x perl-TermReadKey-2.37-1.fc25.s390x dhcp-libs-4.3.5-1.fc25.s390x gmp-devel-6.1.1-1.fc25.s390x ncurses-c++-libs-6.0-6.20160709.fc25.s390x python-pip-8.1.2-2.fc25.noarch gzip-1.8-1.fc25.s390x harfbuzz-1.3.2-1.fc25.s390x python2-iniparse-0.4-20.fc25.noarch libfdisk-2.28.2-1.fc25.s390x python3-iniparse-0.4-20.fc25.noarch python3-gobject-base-3.22.0-1.fc25.s390x python3-kickstart-2.32-1.fc25.noarch python2-yubico-1.3.2-3.fc25.noarch python-idna-2.0-4.fc25.noarch nss-pem-1.0.2-2.fc25.s390x perl-Net-SSLeay-1.78-1.fc25.s390x krb5-workstation-1.14.4-4.fc25.s390x libepoxy-1.3.1-3.fc25.s390x drpm-0.3.0-3.fc25.s390x libsmartcols-2.28.2-1.fc25.s390x s390utils-ziomon-1.36.0-1.fc25.s390x librepo-1.7.18-3.fc25.s390x glib-networking-2.50.0-1.fc25.s390x librsvg2-2.40.16-2.fc25.s390x gnat-srpm-macros-4-1.fc25.noarch webkitgtk3-2.4.11-3.fc25.s390x libXaw-1.0.13-4.fc25.s390x sudo-1.8.18p1-1.fc25.s390x systemtap-sdt-devel-3.1-0.20160725git91bfb36.fc25.s390x xorg-x11-font-utils-7.5-32.fc25.s390x python-decoratortools-1.8-12.fc25.noarch m17n-db-1.7.0-7.fc25.noarch hardlink-1.1-1.fc25.s390x glibc-common-2.24-4.fc25.s390x libcom_err-1.43.3-1.fc25.s390x grep-2.27-1.fc25.s390x iproute-4.6.0-6.fc25.s390x e2fsprogs-libs-1.43.3-1.fc25.s390x curl-7.51.0-4.fc25.s390x libvorbis-1.3.5-1.fc25.s390x python2-dateutil-2.6.0-1.fc25.noarch python3-firewall-0.4.4.2-2.fc25.noarch libXpm-3.5.12-1.fc25.s390x systemd-pam-231-12.fc25.s390x mesa-libgbm-13.0.3-1.fc25.s390x rpm-build-4.13.0-6.fc25.s390x openssl-libs-1.0.2j-3.fc25.s390x python2-smmap-2.0.1-1.fc25.noarch bind99-libs-9.9.9-4.P5.fc25.s390x kernel-4.9.3-200.fc25.s390x gcc-gdb-plugin-6.3.1-1.fc25.s390x selinux-policy-targeted-3.13.1-225.6.fc25.noarch perl-Time-HiRes-1.9741-1.fc25.s390x npth-1.3-1.fc25.s390x poppler-data-0.4.7-6.fc25.noarch nspr-devel-4.13.1-1.fc25.s390x libcephfs1-10.2.4-2.fc25.s390x wayland-devel-1.12.0-1.fc25.s390x librbd1-10.2.4-2.fc25.s390x libxcb-devel-1.12-1.fc25.s390x mesa-libGL-devel-13.0.3-1.fc25.s390x perl-encoding-2.19-5.fc25.s390x libsndfile-1.0.27-1.fc25.s390x python3-cssselect-0.9.2-1.fc25.noarch perl-Digest-MD5-2.55-2.fc25.s390x texlive-tetex-bin-svn36770.0-30.20160520.fc25.noarch texlive-etoolbox-svn38031.2.2a-30.fc25.noarch texlive-babel-svn40706-30.fc25.noarch texlive-fancybox-svn18304.1.4-30.fc25.noarch texlive-xkeyval-svn35741.2.7a-30.fc25.noarch texlive-pdftex-def-svn22653.0.06d-30.fc25.noarch texlive-makeindex-bin-svn40473-30.20160520.fc25.s390x texlive-pdftex-bin-svn40987-30.20160520.fc25.s390x texlive-pst-ovl-svn40873-30.fc25.noarch texlive-crop-svn15878.1.5-30.fc25.noarch texlive-manfnt-font-svn35799.0-30.fc25.noarch texlive-txfonts-svn15878.0-30.fc25.noarch texlive-ntgclass-svn15878.2.1a-30.fc25.noarch texlive-dvisvgm-def-svn41011-30.fc25.noarch texlive-ec-svn25033.1.0-30.fc25.noarch texlive-etex-svn37057.0-30.fc25.noarch texlive-texlive-en-svn41185-30.fc25.noarch texlive-graphics-def-svn41879-30.fc25.noarch texlive-iftex-svn29654.0.2-30.fc25.noarch texlive-pst-math-svn34786.0.63-30.fc25.noarch texlive-bera-svn20031.0-30.fc25.noarch texlive-ms-svn29849.0-30.fc25.noarch texlive-luaotfload-bin-svn34647.0-30.20160520.fc25.noarch texlive-listings-svn37534.1.6-30.fc25.noarch texlive-pst-fill-svn15878.1.01-30.fc25.noarch texlive-pst-pdf-bin-svn7838.0-30.20160520.fc25.noarch texlive-pst-slpe-svn24391.1.31-30.fc25.noarch texlive-seminar-svn34011.1.62-30.fc25.noarch texlive-l3experimental-svn41163-30.fc25.noarch texlive-collection-fontsrecommended-svn35830.0-30.20160520.fc25.noarch gettext-libs-0.19.8.1-3.fc25.s390x java-1.8.0-openjdk-headless-1.8.0.111-5.b16.fc25.s390x pcre2-utf32-10.22-8.fc25.s390x at-spi2-atk-devel-2.22.0-1.fc25.s390x wayland-protocols-devel-1.7-1.fc25.noarch virglrenderer-0.5.0-1.20160411git61846f92f.fc25.s390x libcacard-2.5.2-2.fc24.s390x pixman-devel-0.34.0-2.fc24.s390x libacl-devel-2.2.52-11.fc24.s390x libnfs-devel-1.9.8-2.fc24.s390x texi2html-5.0-4.fc24.noarch libseccomp-devel-2.3.1-1.fc25.s390x perl-libs-5.24.1-382.fc25.s390x libxkbcommon-0.7.1-1.fc25.s390x git-core-2.9.3-2.fc25.s390x nss-softokn-freebl-devel-3.28.1-1.0.fc25.s390x gtk-update-icon-cache-3.22.7-1.fc25.s390x vim-filesystem-8.0.206-1.fc25.s390x libX11-common-1.6.4-4.fc25.noarch gtk3-devel-3.22.7-1.fc25.s390x python2-dnf-1.1.10-5.fc25.noarch vim-minimal-8.0.206-1.fc25.s390x GeoIP-GeoLite-data-2017.01-1.fc25.noarch gpg-pubkey-95a43f54-5284415a dejavu-fonts-common-2.35-3.fc24.noarch libSM-1.2.2-4.fc24.s390x diffutils-3.3-13.fc24.s390x libogg-1.3.2-5.fc24.s390x hunspell-en-US-0.20140811.1-5.fc24.noarch libdaemon-0.14-10.fc24.s390x patch-2.7.5-3.fc24.s390x libsysfs-2.1.0-19.fc24.s390x procmail-3.22-39.fc24.s390x libXdamage-1.1.4-8.fc24.s390x libotf-0.9.13-7.fc24.s390x urw-fonts-2.4-22.fc24.noarch crontabs-1.11-12.20150630git.fc24.noarch ppp-2.4.7-9.fc24.s390x polkit-0.113-5.fc24.s390x cyrus-sasl-2.1.26-26.2.fc24.s390x zlib-devel-1.2.8-10.fc24.s390x time-1.7-49.fc24.s390x gpg-pubkey-fdb19c98-56fd6333 fedora-release-25-1.noarch freetype-2.6.5-1.fc25.s390x libcap-ng-0.7.8-1.fc25.s390x gdbm-1.12-1.fc25.s390x binutils-2.26.1-1.fc25.s390x lcms2-2.8-2.fc25.s390x libcomps-0.1.7-5.fc25.s390x less-481-6.fc25.s390x apr-1.5.2-4.fc25.s390x perl-constant-1.33-367.fc25.noarch perl-Data-Dumper-2.161-1.fc25.s390x ipcalc-0.1.8-1.fc25.s390x perl-Pod-Perldoc-3.27-1.fc25.noarch libteam-1.26-1.fc25.s390x gmp-c++-6.1.1-1.fc25.s390x fontconfig-2.12.1-1.fc25.s390x enchant-1.6.0-14.fc25.s390x json-glib-1.2.2-1.fc25.s390x pyliblzma-0.5.3-16.fc25.s390x libsepol-devel-2.5-10.fc25.s390x python3-libs-3.5.2-4.fc25.s390x python3-ordered-set-2.0.0-4.fc25.noarch python3-rpmconf-1.0.18-2.fc25.noarch python-ipaddress-1.0.16-3.fc25.noarch python2-kerberos-1.2.5-1.fc25.s390x python2-pysocks-1.5.6-5.fc25.noarch fipscheck-lib-1.4.1-11.fc25.s390x libatomic_ops-7.4.4-1.fc25.s390x net-snmp-agent-libs-5.7.3-13.fc25.s390x util-linux-2.28.2-1.fc25.s390x dracut-044-78.fc25.s390x python2-pygpgme-0.3-18.fc25.s390x libsoup-2.56.0-2.fc25.s390x orc-0.4.26-1.fc25.s390x yum-utils-1.1.31-511.fc25.noarch libXrender-0.9.10-1.fc25.s390x libXrandr-1.5.1-1.fc25.s390x go-srpm-macros-2-7.fc25.noarch gnupg2-smime-2.1.13-2.fc25.s390x guile-devel-2.0.13-1.fc25.s390x uboot-tools-2016.09.01-2.fc25.s390x pykickstart-2.32-1.fc25.noarch python-bunch-1.0.1-9.fc25.noarch perl-generators-1.10-1.fc25.noarch perl-Mozilla-CA-20160104-3.fc25.noarch glibc-all-langpacks-2.24-4.fc25.s390x bzip2-libs-1.0.6-21.fc25.s390x libpng-1.6.27-1.fc25.s390x libtiff-4.0.7-1.fc25.s390x desktop-file-utils-0.23-2.fc25.s390x python2-cccolutils-1.4-1.fc25.s390x libcurl-7.51.0-4.fc25.s390x rpm-plugin-systemd-inhibit-4.13.0-6.fc25.s390x cups-libs-2.2.0-5.fc25.s390x python2-lxml-3.7.2-1.fc25.s390x redhat-rpm-config-45-1.fc25.noarch elfutils-libs-0.168-1.fc25.s390x device-mapper-event-libs-1.02.136-3.fc25.s390x lvm2-libs-2.02.167-3.fc25.s390x elfutils-0.168-1.fc25.s390x openssh-7.4p1-1.fc25.s390x python2-gitdb-2.0.0-1.fc25.noarch openssh-server-7.4p1-1.fc25.s390x gcc-gfortran-6.3.1-1.fc25.s390x rpm-devel-4.13.0-6.fc25.s390x libselinux-python-2.5-13.fc25.s390x openjpeg2-2.1.2-3.fc25.s390x js-jquery-2.2.4-1.fc25.noarch boost-thread-1.60.0-10.fc25.s390x json-c-0.12-7.fc24.s390x ghostscript-x11-9.20-5.fc25.s390x libdrm-devel-2.4.74-1.fc25.s390x libuuid-devel-2.28.2-1.fc25.s390x librbd-devel-10.2.4-2.fc25.s390x libXcursor-devel-1.1.14-6.fc24.s390x python3-beautifulsoup4-4.5.3-1.fc25.noarch texlive-kpathsea-svn41139-30.fc25.noarch texlive-amsmath-svn41561-30.fc25.noarch texlive-thumbpdf-svn34621.3.16-30.fc25.noarch texlive-multido-svn18302.1.42-30.fc25.noarch texlive-float-svn15878.1.3d-30.fc25.noarch texlive-psnfss-svn33946.9.2a-30.fc25.noarch texlive-wasy-svn35831.0-30.fc25.noarch texlive-makeindex-svn40768-30.fc25.noarch texlive-pdftex-svn41149-30.fc25.noarch texlive-enumitem-svn24146.3.5.2-30.fc25.noarch texlive-microtype-svn41127-30.fc25.noarch texlive-helvetic-svn31835.0-30.fc25.noarch texlive-times-svn35058.0-30.fc25.noarch texlive-mdwtools-svn15878.1.05.4-30.fc25.noarch texlive-babel-english-svn30264.3.3p-30.fc25.noarch texlive-cmextra-svn32831.0-30.fc25.noarch texlive-enctex-svn34957.0-30.fc25.noarch texlive-texlive-docindex-svn41430-30.fc25.noarch texlive-ifetex-svn24853.1.2-30.fc25.noarch texlive-mparhack-svn15878.1.4-30.fc25.noarch texlive-paralist-svn39247-30.fc25.noarch texlive-algorithms-svn38085.0.1-30.fc25.noarch texlive-geometry-svn19716.5.6-30.fc25.noarch texlive-fontspec-svn41262-30.fc25.noarch texlive-oberdiek-svn41346-30.fc25.noarch texlive-pst-eps-svn15878.1.0-30.fc25.noarch texlive-pstricks-svn41321-30.fc25.noarch texlive-pst-blur-svn15878.2.0-30.fc25.noarch texlive-jknapltx-svn19440.0-30.fc25.noarch texlive-breqn-svn38099.0.98d-30.fc25.noarch texlive-collection-basic-svn41149-30.20160520.fc25.noarch latex2html-2012-7.fc24.noarch lksctp-tools-1.0.16-5.fc24.s390x vte291-0.46.1-1.fc25.s390x openssl-devel-1.0.2j-3.fc25.s390x at-spi2-core-devel-2.22.0-1.fc25.s390x libfdt-1.4.2-1.fc25.s390x libXft-devel-2.3.2-4.fc24.s390x libattr-devel-2.4.47-16.fc24.s390x libiscsi-devel-1.15.0-2.fc24.s390x gettext-0.19.8.1-3.fc25.s390x libjpeg-turbo-devel-1.5.1-0.fc25.s390x glusterfs-libs-3.9.1-1.fc25.s390x glusterfs-api-3.9.1-1.fc25.s390x hawkey-0.6.3-6.1.fc25.s390x nss-softokn-devel-3.28.1-1.0.fc25.s390x glusterfs-cli-3.9.1-1.fc25.s390x vim-common-8.0.206-1.fc25.s390x libX11-1.6.4-4.fc25.s390x pulseaudio-libs-devel-10.0-2.fc25.s390x dnf-yum-1.1.10-5.fc25.noarch tzdata-java-2016j-2.fc25.noarch ccache-3.3.3-1.fc25.s390x gpg-pubkey-8e1431d5-53bcbac7 zlib-1.2.8-10.fc24.s390x sed-4.2.2-15.fc24.s390x p11-kit-0.23.2-2.fc24.s390x psmisc-22.21-8.fc24.s390x gpm-libs-1.20.7-9.fc24.s390x zip-3.0-16.fc24.s390x hostname-3.15-7.fc24.s390x libyubikey-1.13-2.fc24.s390x sg3_utils-libs-1.41-3.fc24.s390x polkit-pkla-compat-0.1-7.fc24.s390x passwd-0.79-8.fc24.s390x trousers-0.3.13-6.fc24.s390x grubby-8.40-3.fc24.s390x rootfiles-8.1-19.fc24.noarch python-rpm-macros-3-10.fc25.noarch info-6.1-3.fc25.s390x libuuid-2.28.2-1.fc25.s390x iptables-libs-1.6.0-2.fc25.s390x nettle-3.3-1.fc25.s390x jansson-2.9-1.fc25.s390x libksba-1.3.5-1.fc25.s390x perl-Text-ParseWords-3.30-365.fc25.noarch perl-PathTools-3.63-366.fc25.s390x perl-File-Temp-0.23.04-365.fc25.noarch fuse-libs-2.9.7-1.fc25.s390x perl-Pod-Escapes-1.07-365.fc25.noarch perl-Term-ANSIColor-4.05-2.fc25.noarch perl-URI-1.71-5.fc25.noarch libXfont-1.5.2-1.fc25.s390x crypto-policies-20160921-2.git75b9b04.fc25.noarch python-six-1.10.0-3.fc25.noarch dbus-glib-0.108-1.fc25.s390x gobject-introspection-1.50.0-1.fc25.s390x libpwquality-1.3.0-6.fc25.s390x python-gobject-base-3.22.0-1.fc25.s390x python-html5lib-0.999-9.fc25.noarch python3-dbus-1.2.4-2.fc25.s390x python3-chardet-2.3.0-1.fc25.noarch python3-urllib3-1.15.1-3.fc25.noarch python-offtrac-0.1.0-7.fc25.noarch python2-cryptography-1.5.3-3.fc25.s390x python2-requests-kerberos-0.10.0-2.fc25.noarch libserf-1.3.9-1.fc25.s390x libdatrie-0.2.9-3.fc25.s390x s390utils-base-1.36.0-1.fc25.s390x kpartx-0.4.9-83.fc25.s390x s390utils-cpuplugd-1.36.0-1.fc25.s390x rpmconf-1.0.18-2.fc25.noarch s390utils-osasnmpd-1.36.0-1.fc25.s390x python-dnf-plugins-extras-common-0.0.12-4.fc25.noarch pango-1.40.3-1.fc25.s390x fpc-srpm-macros-1.0-1.fc25.noarch kernel-core-4.8.8-300.fc25.s390x fedora-upgrade-25.2-1.fc25.noarch net-tools-2.0-0.38.20160329git.fc25.s390x libuser-0.62-4.fc25.s390x screen-4.4.0-4.fc25.s390x man-db-2.7.5-3.fc25.s390x sqlite-3.14.2-1.fc25.s390x python-systemd-doc-232-1.fc25.s390x pcre-8.40-1.fc25.s390x libdb-5.3.28-16.fc25.s390x lz4-1.7.5-1.fc25.s390x tar-1.29-3.fc25.s390x emacs-common-25.1-3.fc25.s390x perl-threads-shared-1.54-1.fc25.s390x unzip-6.0-31.fc25.s390x mesa-libglapi-13.0.3-1.fc25.s390x rpm-libs-4.13.0-6.fc25.s390x selinux-policy-3.13.1-225.6.fc25.noarch pcre-utf16-8.40-1.fc25.s390x bodhi-client-0.9.12.2-6.fc25.noarch rpmlint-1.9-5.fc25.noarch glibc-headers-2.24-4.fc25.s390x dbus-1.11.8-1.fc25.s390x kernel-core-4.9.3-200.fc25.s390x cairo-1.14.8-1.fc25.s390x ca-certificates-2017.2.11-1.0.fc25.noarch openssh-clients-7.4p1-1.fc25.s390x python2-GitPython-2.1.1-2.fc25.noarch mariadb-libs-10.1.20-1.fc25.s390x NetworkManager-glib-1.4.4-3.fc25.s390x gcc-go-6.3.1-1.fc25.s390x cracklib-dicts-2.9.6-4.fc25.s390x iproute-tc-4.6.0-6.fc25.s390x libselinux-python3-2.5-13.fc25.s390x strace-4.15-1.fc25.s390x python2-enchant-1.6.8-1.fc25.noarch boost-iostreams-1.60.0-10.fc25.s390x bluez-libs-5.43-1.fc25.s390x ghostscript-9.20-5.fc25.s390x userspace-rcu-0.9.2-2.fc25.s390x mesa-libwayland-egl-devel-13.0.3-1.fc25.s390x libXext-devel-1.3.3-4.fc24.s390x libXrandr-devel-1.5.1-1.fc25.s390x perl-XML-XPath-1.39-1.fc25.noarch python3-lxml-3.7.2-1.fc25.s390x texlive-texlive.infra-bin-svn40312-30.20160520.fc25.s390x texlive-ifxetex-svn19685.0.5-30.fc25.noarch texlive-thumbpdf-bin-svn6898.0-30.20160520.fc25.noarch texlive-babelbib-svn25245.1.31-30.fc25.noarch texlive-index-svn24099.4.1beta-30.fc25.noarch texlive-caption-svn41409-30.fc25.noarch texlive-bibtex-bin-svn40473-30.20160520.fc25.s390x texlive-mfware-bin-svn40473-30.20160520.fc25.s390x texlive-texconfig-svn40768-30.fc25.noarch texlive-footmisc-svn23330.5.5b-30.fc25.noarch texlive-psfrag-svn15878.3.04-30.fc25.noarch texlive-eurosym-svn17265.1.4_subrfix-30.fc25.noarch texlive-symbol-svn31835.0-30.fc25.noarch texlive-euenc-svn19795.0.1h-30.fc25.noarch texlive-textcase-svn15878.0-30.fc25.noarch texlive-charter-svn15878.0-30.fc25.noarch texlive-wasysym-svn15878.2.0-30.fc25.noarch texlive-mflogo-svn38628-30.fc25.noarch texlive-soul-svn15878.2.4-30.fc25.noarch texlive-marginnote-svn41382-30.fc25.noarch texlive-filecontents-svn24250.1.3-30.fc25.noarch texlive-tipa-svn29349.1.3-30.fc25.noarch texlive-xcolor-svn41044-30.fc25.noarch texlive-breakurl-svn29901.1.40-30.fc25.noarch texlive-attachfile-svn38830-30.fc25.noarch texlive-pst-coil-svn37377.1.07-30.fc25.noarch texlive-auto-pst-pdf-svn23723.0.6-30.fc25.noarch texlive-ctable-svn38672-30.fc25.noarch texlive-extsizes-svn17263.1.4a-30.fc25.noarch texlive-beamer-svn36461.3.36-30.fc25.noarch texlive-dvipdfmx-bin-svn40273-30.20160520.fc25.s390x netpbm-progs-10.76.00-2.fc25.s390x vte-profile-0.46.1-1.fc25.s390x krb5-devel-1.14.4-4.fc25.s390x dbus-devel-1.11.8-1.fc25.s390x sqlite-devel-3.14.2-1.fc25.s390x libiscsi-1.15.0-2.fc24.s390x fontconfig-devel-2.12.1-1.fc25.s390x libfdt-devel-1.4.2-1.fc25.s390x ceph-devel-compat-10.2.4-2.fc25.s390x zlib-static-1.2.8-10.fc24.s390x chrpath-0.16-3.fc24.s390x python-2.7.13-1.fc25.s390x nss-3.28.1-1.3.fc25.s390x python2-hawkey-0.6.3-6.1.fc25.s390x gdk-pixbuf2-modules-2.36.4-1.fc25.s390x perl-Git-2.9.3-2.fc25.noarch kernel-core-4.9.5-200.fc25.s390x publicsuffix-list-dafsa-20170116-1.fc25.noarch perl-SelfLoader-1.23-382.fc25.noarch perl-open-1.10-382.fc25.noarch gpgme-1.8.0-8.fc25.s390x === TEST BEGIN === Using CC: /home/fam/bin/cc Install prefix /var/tmp/patchew-tester-tmp-rfll8e28/src/install BIOS directory /var/tmp/patchew-tester-tmp-rfll8e28/src/install/share/qemu binary directory /var/tmp/patchew-tester-tmp-rfll8e28/src/install/bin library directory /var/tmp/patchew-tester-tmp-rfll8e28/src/install/lib module directory /var/tmp/patchew-tester-tmp-rfll8e28/src/install/lib/qemu libexec directory /var/tmp/patchew-tester-tmp-rfll8e28/src/install/libexec include directory /var/tmp/patchew-tester-tmp-rfll8e28/src/install/include config directory /var/tmp/patchew-tester-tmp-rfll8e28/src/install/etc local state directory /var/tmp/patchew-tester-tmp-rfll8e28/src/install/var Manual directory /var/tmp/patchew-tester-tmp-rfll8e28/src/install/share/man ELF interp prefix /usr/gnemul/qemu-%M Source path /var/tmp/patchew-tester-tmp-rfll8e28/src C compiler /home/fam/bin/cc Host C compiler cc C++ compiler c++ Objective-C compiler /home/fam/bin/cc ARFLAGS rv CFLAGS -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g QEMU_CFLAGS -I/usr/include/pixman-1 -Werror -DHAS_LIBSSH2_SFTP_FSYNC -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -D_GNU_SOURCE -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -I/usr/include/p11-kit-1 -I/usr/include/libpng16 -I/usr/include/cacard -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/libusb-1.0 LDFLAGS -Wl,--warn-common -m64 -g make make install install python python -B smbd /usr/sbin/smbd module support no host CPU s390x host big endian yes target list aarch64-softmmu alpha-softmmu arm-softmmu cris-softmmu i386-softmmu lm32-softmmu m68k-softmmu microblazeel-softmmu microblaze-softmmu mips64el-softmmu mips64-softmmu mipsel-softmmu mips-softmmu moxie-softmmu nios2-softmmu or1k-softmmu ppc64-softmmu ppcemb-softmmu ppc-softmmu s390x-softmmu sh4eb-softmmu sh4-softmmu sparc64-softmmu sparc-softmmu tricore-softmmu unicore32-softmmu x86_64-softmmu xtensaeb-softmmu xtensa-softmmu aarch64-linux-user alpha-linux-user armeb-linux-user arm-linux-user cris-linux-user hppa-linux-user i386-linux-user m68k-linux-user microblazeel-linux-user microblaze-linux-user mips64el-linux-user mips64-linux-user mipsel-linux-user mips-linux-user mipsn32el-linux-user mipsn32-linux-user nios2-linux-user or1k-linux-user ppc64abi32-linux-user ppc64le-linux-user ppc64-linux-user ppc-linux-user s390x-linux-user sh4eb-linux-user sh4-linux-user sparc32plus-linux-user sparc64-linux-user sparc-linux-user tilegx-linux-user x86_64-linux-user tcg debug enabled no gprof enabled no sparse enabled no strip binaries yes profiler no static build no pixman system SDL support yes (2.0.5) GTK support yes (3.22.7) GTK GL support yes VTE support yes (0.46.1) TLS priority NORMAL GNUTLS support yes GNUTLS rnd yes libgcrypt no libgcrypt kdf no nettle yes (3.3) nettle kdf yes libtasn1 yes curses support yes virgl support yes curl support yes mingw32 support no Audio drivers oss Block whitelist (rw) Block whitelist (ro) VirtFS support yes VNC support yes VNC SASL support yes VNC JPEG support yes VNC PNG support yes xen support no brlapi support yes bluez support yes Documentation yes PIE no vde support no netmap support no Linux AIO support yes ATTR/XATTR support yes Install blobs yes KVM support yes HAX support no RDMA support no TCG interpreter no fdt support yes preadv support yes fdatasync yes madvise yes posix_madvise yes libcap-ng support yes vhost-net support yes vhost-scsi support yes vhost-vsock support yes Trace backends log spice support no rbd support yes xfsctl support no smartcard support yes libusb yes usb net redir yes OpenGL support yes OpenGL dmabufs yes libiscsi support yes libnfs support yes build guest agent yes QGA VSS support no QGA w32 disk info no QGA MSI support no seccomp support no coroutine backend ucontext coroutine pool yes debug stack usage no GlusterFS support yes Archipelago support no gcov gcov gcov enabled no TPM support yes libssh2 support yes TPM passthrough no QOM debugging yes lzo support yes snappy support yes bzip2 support yes NUMA host support no tcmalloc support no jemalloc support no avx2 optimization no replication support yes GEN aarch64-softmmu/config-devices.mak.tmp GEN alpha-softmmu/config-devices.mak.tmp GEN arm-softmmu/config-devices.mak.tmp GEN cris-softmmu/config-devices.mak.tmp GEN cris-softmmu/config-devices.mak GEN i386-softmmu/config-devices.mak.tmp GEN alpha-softmmu/config-devices.mak GEN arm-softmmu/config-devices.mak GEN lm32-softmmu/config-devices.mak.tmp GEN aarch64-softmmu/config-devices.mak GEN m68k-softmmu/config-devices.mak.tmp GEN microblazeel-softmmu/config-devices.mak.tmp GEN lm32-softmmu/config-devices.mak GEN i386-softmmu/config-devices.mak GEN m68k-softmmu/config-devices.mak GEN microblaze-softmmu/config-devices.mak.tmp GEN mips64el-softmmu/config-devices.mak.tmp GEN mips64-softmmu/config-devices.mak.tmp GEN microblaze-softmmu/config-devices.mak GEN microblazeel-softmmu/config-devices.mak GEN mipsel-softmmu/config-devices.mak.tmp GEN mips-softmmu/config-devices.mak.tmp GEN mips64el-softmmu/config-devices.mak GEN moxie-softmmu/config-devices.mak.tmp GEN mips64-softmmu/config-devices.mak GEN mipsel-softmmu/config-devices.mak GEN nios2-softmmu/config-devices.mak.tmp GEN mips-softmmu/config-devices.mak GEN moxie-softmmu/config-devices.mak GEN or1k-softmmu/config-devices.mak.tmp GEN ppc64-softmmu/config-devices.mak.tmp GEN ppcemb-softmmu/config-devices.mak.tmp GEN nios2-softmmu/config-devices.mak GEN ppc-softmmu/config-devices.mak.tmp GEN or1k-softmmu/config-devices.mak GEN s390x-softmmu/config-devices.mak.tmp GEN ppc64-softmmu/config-devices.mak GEN ppcemb-softmmu/config-devices.mak GEN sh4eb-softmmu/config-devices.mak.tmp GEN s390x-softmmu/config-devices.mak GEN sparc64-softmmu/config-devices.mak.tmp GEN sh4-softmmu/config-devices.mak.tmp GEN ppc-softmmu/config-devices.mak GEN sparc-softmmu/config-devices.mak.tmp GEN sparc-softmmu/config-devices.mak GEN tricore-softmmu/config-devices.mak.tmp GEN sh4eb-softmmu/config-devices.mak GEN sh4-softmmu/config-devices.mak GEN unicore32-softmmu/config-devices.mak.tmp GEN sparc64-softmmu/config-devices.mak GEN x86_64-softmmu/config-devices.mak.tmp GEN tricore-softmmu/config-devices.mak GEN xtensaeb-softmmu/config-devices.mak.tmp GEN xtensa-softmmu/config-devices.mak.tmp GEN unicore32-softmmu/config-devices.mak GEN xtensaeb-softmmu/config-devices.mak GEN x86_64-softmmu/config-devices.mak GEN aarch64-linux-user/config-devices.mak.tmp GEN xtensa-softmmu/config-devices.mak GEN alpha-linux-user/config-devices.mak.tmp GEN armeb-linux-user/config-devices.mak.tmp GEN arm-linux-user/config-devices.mak.tmp GEN aarch64-linux-user/config-devices.mak GEN alpha-linux-user/config-devices.mak GEN cris-linux-user/config-devices.mak.tmp GEN arm-linux-user/config-devices.mak GEN hppa-linux-user/config-devices.mak.tmp GEN i386-linux-user/config-devices.mak.tmp GEN armeb-linux-user/config-devices.mak GEN m68k-linux-user/config-devices.mak.tmp GEN i386-linux-user/config-devices.mak GEN cris-linux-user/config-devices.mak GEN hppa-linux-user/config-devices.mak GEN microblaze-linux-user/config-devices.mak.tmp GEN microblazeel-linux-user/config-devices.mak.tmp GEN mips64el-linux-user/config-devices.mak.tmp GEN m68k-linux-user/config-devices.mak GEN microblaze-linux-user/config-devices.mak GEN mips64-linux-user/config-devices.mak.tmp GEN microblazeel-linux-user/config-devices.mak GEN mips-linux-user/config-devices.mak.tmp GEN mipsel-linux-user/config-devices.mak.tmp GEN mips64el-linux-user/config-devices.mak GEN mipsn32el-linux-user/config-devices.mak.tmp GEN mips-linux-user/config-devices.mak GEN mips64-linux-user/config-devices.mak GEN mipsn32-linux-user/config-devices.mak.tmp GEN mipsel-linux-user/config-devices.mak GEN nios2-linux-user/config-devices.mak.tmp GEN or1k-linux-user/config-devices.mak.tmp GEN mipsn32el-linux-user/config-devices.mak GEN nios2-linux-user/config-devices.mak GEN mipsn32-linux-user/config-devices.mak GEN ppc64abi32-linux-user/config-devices.mak.tmp GEN ppc64le-linux-user/config-devices.mak.tmp GEN ppc64-linux-user/config-devices.mak.tmp GEN or1k-linux-user/config-devices.mak GEN ppc-linux-user/config-devices.mak.tmp GEN ppc64abi32-linux-user/config-devices.mak GEN s390x-linux-user/config-devices.mak.tmp GEN ppc64le-linux-user/config-devices.mak GEN ppc64-linux-user/config-devices.mak GEN ppc-linux-user/config-devices.mak GEN s390x-linux-user/config-devices.mak GEN sh4eb-linux-user/config-devices.mak.tmp GEN sparc32plus-linux-user/config-devices.mak.tmp GEN sh4-linux-user/config-devices.mak.tmp GEN sparc64-linux-user/config-devices.mak.tmp GEN sparc32plus-linux-user/config-devices.mak GEN sh4eb-linux-user/config-devices.mak GEN sparc64-linux-user/config-devices.mak GEN sh4-linux-user/config-devices.mak GEN sparc-linux-user/config-devices.mak.tmp GEN tilegx-linux-user/config-devices.mak.tmp GEN x86_64-linux-user/config-devices.mak.tmp GEN x86_64-linux-user/config-devices.mak GEN tilegx-linux-user/config-devices.mak GEN sparc-linux-user/config-devices.mak GEN config-host.h GEN qemu-options.def GEN qmp-commands.h GEN qapi-types.h GEN qapi-visit.h GEN qapi-event.h GEN qmp-introspect.h GEN trace/generated-tcg-tracers.h GEN trace/generated-helpers-wrappers.h GEN trace/generated-helpers.h GEN tests/test-qapi-types.h GEN module_block.h GEN tests/test-qapi-visit.h GEN tests/test-qmp-commands.h GEN tests/test-qmp-introspect.h GEN tests/test-qapi-event.h GEN trace-root.h GEN util/trace.h GEN crypto/trace.h GEN io/trace.h GEN block/trace.h GEN migration/trace.h GEN backends/trace.h GEN hw/block/trace.h GEN hw/block/dataplane/trace.h GEN hw/char/trace.h GEN hw/intc/trace.h GEN hw/net/trace.h GEN hw/virtio/trace.h GEN hw/audio/trace.h GEN hw/misc/trace.h GEN hw/usb/trace.h GEN hw/scsi/trace.h GEN hw/nvram/trace.h GEN hw/display/trace.h GEN hw/input/trace.h GEN hw/dma/trace.h GEN hw/timer/trace.h GEN hw/sparc/trace.h GEN hw/sd/trace.h GEN hw/isa/trace.h GEN hw/mem/trace.h GEN hw/i386/trace.h GEN hw/i386/xen/trace.h GEN hw/9pfs/trace.h GEN hw/ppc/trace.h GEN hw/pci/trace.h GEN hw/s390x/trace.h GEN hw/vfio/trace.h GEN hw/acpi/trace.h GEN hw/alpha/trace.h GEN hw/arm/trace.h GEN hw/xen/trace.h GEN ui/trace.h GEN audio/trace.h GEN net/trace.h GEN target/arm/trace.h GEN target/i386/trace.h GEN target/sparc/trace.h GEN target/s390x/trace.h GEN target/ppc/trace.h GEN qom/trace.h GEN linux-user/trace.h GEN qapi/trace.h GEN config-all-devices.mak CC tests/qemu-iotests/socket_scm_helper.o GEN version.texi GEN qemu-monitor.texi GEN qemu-options.texi GEN qemu-monitor-info.texi GEN qemu-img-cmds.texi GEN qemu-nbd.8 GEN qemu-ga.8 GEN qemu-qapi.texi GEN fsdev/virtfs-proxy-helper.1 GEN qemu-ga-qapi.texi GEN qga/qapi-generated/qga-qapi-visit.h GEN qga/qapi-generated/qga-qapi-types.h GEN qga/qapi-generated/qga-qmp-commands.h GEN qga/qapi-generated/qga-qapi-types.c GEN qga/qapi-generated/qga-qmp-marshal.c GEN qga/qapi-generated/qga-qapi-visit.c GEN util/trace.c GEN crypto/trace.c GEN trace-root.c GEN migration/trace.c GEN io/trace.c GEN backends/trace.c GEN block/trace.c GEN hw/block/trace.c GEN hw/block/dataplane/trace.c GEN hw/char/trace.c GEN hw/intc/trace.c GEN hw/virtio/trace.c GEN hw/net/trace.c GEN hw/audio/trace.c GEN hw/misc/trace.c GEN hw/usb/trace.c GEN hw/scsi/trace.c GEN hw/nvram/trace.c GEN hw/display/trace.c GEN hw/input/trace.c GEN hw/timer/trace.c GEN hw/dma/trace.c GEN hw/sparc/trace.c GEN hw/isa/trace.c GEN hw/sd/trace.c GEN hw/mem/trace.c GEN hw/i386/trace.c GEN hw/i386/xen/trace.c GEN hw/ppc/trace.c GEN hw/9pfs/trace.c GEN hw/pci/trace.c GEN hw/s390x/trace.c GEN hw/vfio/trace.c GEN hw/acpi/trace.c GEN hw/arm/trace.c GEN hw/alpha/trace.c GEN hw/xen/trace.c GEN ui/trace.c GEN audio/trace.c GEN net/trace.c GEN target/arm/trace.c GEN target/i386/trace.c GEN target/sparc/trace.c GEN target/s390x/trace.c GEN target/ppc/trace.c GEN qom/trace.c GEN linux-user/trace.c GEN qapi/trace.c GEN qmp-introspect.c GEN qapi-types.c GEN qapi-visit.c GEN qapi-event.c CC qapi/qapi-visit-core.o CC qapi/qapi-dealloc-visitor.o CC qapi/qobject-input-visitor.o CC qapi/qobject-output-visitor.o CC qapi/qmp-registry.o CC qapi/qmp-dispatch.o CC qapi/string-input-visitor.o CC qapi/string-output-visitor.o CC qapi/opts-visitor.o CC qapi/qapi-clone-visitor.o CC qapi/qmp-event.o CC qapi/qapi-util.o CC qobject/qnull.o CC qobject/qint.o CC qobject/qstring.o CC qobject/qdict.o CC qobject/qlist.o CC qobject/qfloat.o CC qobject/qbool.o CC qobject/qjson.o CC qobject/qobject.o CC qobject/json-lexer.o CC qobject/json-streamer.o CC qobject/json-parser.o CC trace/control.o CC trace/qmp.o CC util/osdep.o CC util/cutils.o CC util/unicode.o CC util/qemu-timer-common.o CC util/bufferiszero.o CC util/lockcnt.o CC util/compatfd.o CC util/event_notifier-posix.o CC util/mmap-alloc.o CC util/oslib-posix.o CC util/qemu-openpty.o CC util/qemu-thread-posix.o CC util/memfd.o CC util/envlist.o CC util/path.o CC util/module.o CC util/host-utils.o CC util/bitmap.o CC util/hbitmap.o CC util/bitops.o CC util/fifo8.o CC util/acl.o CC util/error.o CC util/qemu-error.o CC util/id.o CC util/iov.o CC util/qemu-config.o CC util/qemu-sockets.o CC util/uri.o CC util/notify.o CC util/qemu-option.o CC util/qemu-progress.o CC util/hexdump.o CC util/crc32c.o CC util/uuid.o CC util/throttle.o CC util/getauxval.o CC util/readline.o CC util/rcu.o CC util/qemu-coroutine.o CC util/qemu-coroutine-lock.o CC util/qemu-coroutine-io.o CC util/qemu-coroutine-sleep.o CC util/coroutine-ucontext.o CC util/buffer.o CC util/base64.o CC util/timed-average.o CC util/log.o CC util/qdist.o CC util/qht.o CC util/range.o CC crypto/pbkdf-stub.o CC stubs/arch-query-cpu-model-expansion.o CC stubs/arch-query-cpu-def.o CC stubs/arch-query-cpu-model-comparison.o CC stubs/arch-query-cpu-model-baseline.o CC stubs/bdrv-next-monitor-owned.o CC stubs/blk-commit-all.o CC stubs/clock-warp.o CC stubs/blockdev-close-all-bdrv-states.o CC stubs/cpu-get-icount.o CC stubs/cpu-get-clock.o CC stubs/dump.o CC stubs/error-printf.o CC stubs/fdset.o CC stubs/gdbstub.o CC stubs/get-vm-name.o CC stubs/iothread.o CC stubs/iothread-lock.o CC stubs/is-daemonized.o CC stubs/machine-init-done.o CC stubs/migr-blocker.o CC stubs/monitor.o CC stubs/notify-event.o CC stubs/qtest.o CC stubs/replay.o CC stubs/set-fd-handler.o CC stubs/runstate-check.o CC stubs/slirp.o CC stubs/sysbus.o CC stubs/trace-control.o CC stubs/uuid.o CC stubs/vm-stop.o CC stubs/vmstate.o CC stubs/qmp_pc_dimm_device_list.o CC stubs/target-monitor-defs.o CC stubs/target-get-monitor-def.o CC stubs/pc_madt_cpu_entry.o CC contrib/ivshmem-client/ivshmem-client.o CC contrib/ivshmem-client/main.o CC contrib/ivshmem-server/ivshmem-server.o CC contrib/ivshmem-server/main.o CC qemu-nbd.o CC async.o CC thread-pool.o CC block.o CC blockjob.o CC main-loop.o CC iohandler.o CC aio-posix.o CC qemu-timer.o CC qemu-io-cmds.o CC replication.o CC block/raw-format.o CC block/vdi.o CC block/qcow.o CC block/vmdk.o CC block/cloop.o CC block/bochs.o CC block/vpc.o CC block/vvfat.o CC block/dmg.o CC block/qcow2.o CC block/qcow2-refcount.o CC block/qcow2-cluster.o CC block/qcow2-snapshot.o CC block/qcow2-cache.o CC block/qed.o CC block/qed-gencb.o CC block/qed-l2-cache.o CC block/qed-table.o CC block/qed-cluster.o CC block/qed-check.o CC block/vhdx.o CC block/vhdx-endian.o CC block/vhdx-log.o CC block/quorum.o CC block/parallels.o CC block/blkverify.o CC block/blkdebug.o CC block/blkreplay.o CC block/block-backend.o CC block/snapshot.o CC block/qapi.o CC block/file-posix.o CC block/linux-aio.o CC block/mirror.o CC block/null.o CC block/commit.o CC block/io.o CC block/throttle-groups.o CC block/nbd-client.o CC block/nbd.o CC block/sheepdog.o CC block/iscsi-opts.o CC block/accounting.o CC block/dirty-bitmap.o CC block/write-threshold.o CC block/backup.o CC block/replication.o CC block/crypto.o CC nbd/server.o CC nbd/client.o CC nbd/common.o CC block/iscsi.o CC block/nfs.o CC block/curl.o CC block/rbd.o CC block/gluster.o CC block/ssh.o CC block/dmg-bz2.o CC crypto/init.o CC crypto/hash.o CC crypto/hash-nettle.o CC crypto/hmac.o CC crypto/hmac-nettle.o CC crypto/aes.o CC crypto/desrfb.o CC crypto/cipher.o CC crypto/tlscreds.o CC crypto/tlscredsanon.o CC crypto/tlscredsx509.o CC crypto/tlssession.o CC crypto/secret.o CC crypto/random-gnutls.o CC crypto/pbkdf.o CC crypto/pbkdf-nettle.o CC crypto/ivgen.o CC crypto/ivgen-plain.o CC crypto/ivgen-essiv.o CC crypto/afsplit.o CC crypto/xts.o CC crypto/ivgen-plain64.o CC crypto/block.o CC crypto/block-qcow.o CC crypto/block-luks.o CC io/channel.o CC io/channel-buffer.o CC io/channel-command.o CC io/channel-file.o CC io/channel-tls.o CC io/channel-socket.o CC io/channel-watch.o CC io/channel-websock.o CC io/channel-util.o CC io/dns-resolver.o CC io/task.o CC qom/object.o CC qom/container.o CC qom/qom-qobject.o CC qom/object_interfaces.o GEN qemu-img-cmds.h CC fsdev/virtfs-proxy-helper.o CC fsdev/9p-marshal.o CC qemu-io.o CC qemu-bridge-helper.o CC fsdev/9p-iov-marshal.o CC blockdev.o CC blockdev-nbd.o CC iothread.o CC qdev-monitor.o CC device-hotplug.o CC os-posix.o CC page_cache.o CC bt-host.o CC accel.o CC bt-vhci.o CC dma-helpers.o CC vl.o CC device_tree.o CC tpm.o GEN qmp-marshal.c CC qmp.o CC hmp.o CC cpus-common.o CC audio/audio.o CC audio/noaudio.o CC audio/wavaudio.o CC audio/mixeng.o CC audio/sdlaudio.o CC audio/ossaudio.o CC audio/wavcapture.o CC backends/rng-egd.o CC backends/rng.o CC backends/rng-random.o CC backends/msmouse.o CC backends/wctablet.o CC backends/testdev.o CC backends/baum.o CC backends/tpm.o CC backends/hostmem.o CC backends/hostmem-ram.o CC backends/hostmem-file.o CC backends/cryptodev.o CC backends/cryptodev-builtin.o CC block/stream.o CC disas/alpha.o CC disas/arm.o CC disas/cris.o CXX disas/arm-a64.o CC disas/hppa.o CC disas/i386.o CC disas/m68k.o CC disas/microblaze.o CC disas/mips.o CC disas/nios2.o CC disas/moxie.o CC disas/ppc.o CC disas/s390.o CC disas/sh4.o CC disas/sparc.o CC disas/lm32.o CXX disas/libvixl/vixl/utils.o CXX disas/libvixl/vixl/compiler-intrinsics.o CXX disas/libvixl/vixl/a64/instructions-a64.o CXX disas/libvixl/vixl/a64/decoder-a64.o CXX disas/libvixl/vixl/a64/disasm-a64.o CC fsdev/qemu-fsdev.o CC fsdev/qemu-fsdev-opts.o CC fsdev/qemu-fsdev-dummy.o CC hw/9pfs/9p.o CC hw/9pfs/9p-local.o CC hw/9pfs/9p-xattr.o CC hw/9pfs/9p-xattr-user.o CC hw/9pfs/9p-posix-acl.o CC hw/9pfs/coth.o CC hw/9pfs/cofs.o CC hw/9pfs/cofile.o CC hw/9pfs/codir.o CC hw/9pfs/coxattr.o CC hw/9pfs/9p-synth.o CC hw/9pfs/9p-handle.o CC hw/9pfs/9p-proxy.o CC hw/acpi/core.o CC hw/acpi/piix4.o CC hw/acpi/pcihp.o CC hw/acpi/ich9.o CC hw/acpi/tco.o CC hw/acpi/cpu_hotplug.o CC hw/acpi/memory_hotplug.o CC hw/acpi/cpu.o CC hw/acpi/nvdimm.o CC hw/acpi/acpi_interface.o CC hw/acpi/aml-build.o CC hw/acpi/bios-linker-loader.o CC hw/acpi/ipmi.o CC hw/acpi/acpi-stub.o CC hw/acpi/ipmi-stub.o CC hw/audio/sb16.o CC hw/audio/es1370.o CC hw/audio/fmopl.o CC hw/audio/ac97.o CC hw/audio/adlib.o CC hw/audio/gus.o CC hw/audio/gusemu_hal.o CC hw/audio/gusemu_mixer.o CC hw/audio/cs4231a.o CC hw/audio/intel-hda.o CC hw/audio/hda-codec.o CC hw/audio/pcspk.o CC hw/audio/wm8750.o CC hw/audio/pl041.o CC hw/audio/lm4549.o CC hw/audio/cs4231.o CC hw/audio/marvell_88w8618.o CC hw/audio/milkymist-ac97.o CC hw/block/block.o CC hw/block/cdrom.o CC hw/block/hd-geometry.o CC hw/block/fdc.o CC hw/block/m25p80.o CC hw/block/nand.o CC hw/block/pflash_cfi01.o CC hw/block/pflash_cfi02.o CC hw/block/ecc.o CC hw/block/onenand.o CC hw/block/nvme.o CC hw/bt/core.o CC hw/bt/l2cap.o CC hw/bt/sdp.o CC hw/bt/hci.o CC hw/bt/hid.o CC hw/bt/hci-csr.o CC hw/char/ipoctal232.o CC hw/char/escc.o CC hw/char/parallel.o CC hw/char/pl011.o CC hw/char/serial.o CC hw/char/serial-isa.o CC hw/char/serial-pci.o CC hw/char/virtio-console.o CC hw/char/xilinx_uartlite.o CC hw/char/cadence_uart.o CC hw/char/etraxfs_ser.o CC hw/char/debugcon.o CC hw/char/imx_serial.o CC hw/char/grlib_apbuart.o CC hw/char/lm32_juart.o CC hw/char/lm32_uart.o CC hw/char/milkymist-uart.o CC hw/char/sclpconsole-lm.o CC hw/char/sclpconsole.o CC hw/core/qdev.o CC hw/core/qdev-properties.o CC hw/core/bus.o CC hw/core/reset.o CC hw/core/fw-path-provider.o CC hw/core/irq.o CC hw/core/hotplug.o CC hw/core/empty_slot.o CC hw/core/stream.o CC hw/core/ptimer.o CC hw/core/sysbus.o CC hw/core/machine.o CC hw/core/loader.o CC hw/core/qdev-properties-system.o CC hw/core/register.o CC hw/core/or-irq.o CC hw/core/platform-bus.o CC hw/display/ads7846.o CC hw/display/cirrus_vga.o CC hw/display/g364fb.o CC hw/display/jazz_led.o CC hw/display/pl110.o CC hw/display/ssd0303.o CC hw/display/ssd0323.o CC hw/display/vga-pci.o CC hw/display/vga-isa-mm.o CC hw/display/vga-isa.o CC hw/display/vmware_vga.o CC hw/display/blizzard.o CC hw/display/exynos4210_fimd.o CC hw/display/framebuffer.o CC hw/display/milkymist-vgafb.o CC hw/display/tc6393xb.o CC hw/display/milkymist-tmu2.o CC hw/dma/puv3_dma.o CC hw/dma/rc4030.o CC hw/dma/pl080.o CC hw/dma/pl330.o CC hw/dma/i82374.o CC hw/dma/i8257.o CC hw/dma/xilinx_axidma.o CC hw/dma/xlnx-zynq-devcfg.o CC hw/dma/etraxfs_dma.o CC hw/dma/sparc32_dma.o CC hw/dma/sun4m_iommu.o CC hw/gpio/max7310.o CC hw/gpio/pl061.o CC hw/gpio/puv3_gpio.o CC hw/gpio/zaurus.o CC hw/gpio/mpc8xxx.o CC hw/gpio/gpio_key.o CC hw/i2c/core.o CC hw/i2c/smbus.o CC hw/i2c/smbus_eeprom.o CC hw/i2c/i2c-ddc.o CC hw/i2c/versatile_i2c.o CC hw/i2c/smbus_ich9.o CC hw/i2c/pm_smbus.o CC hw/i2c/bitbang_i2c.o CC hw/i2c/exynos4210_i2c.o CC hw/i2c/imx_i2c.o CC hw/i2c/aspeed_i2c.o CC hw/ide/core.o CC hw/ide/atapi.o CC hw/ide/qdev.o CC hw/ide/pci.o CC hw/ide/isa.o CC hw/ide/piix.o CC hw/ide/cmd646.o CC hw/ide/macio.o CC hw/ide/mmio.o CC hw/ide/microdrive.o CC hw/ide/via.o CC hw/ide/ahci.o CC hw/ide/ich.o CC hw/input/adb.o CC hw/input/hid.o CC hw/input/lm832x.o CC hw/input/pckbd.o CC hw/input/pl050.o CC hw/input/stellaris_input.o CC hw/input/ps2.o CC hw/input/tsc2005.o CC hw/input/vmmouse.o CC hw/input/virtio-input.o CC hw/input/virtio-input-hid.o CC hw/input/virtio-input-host.o CC hw/intc/heathrow_pic.o CC hw/intc/i8259_common.o CC hw/intc/i8259.o CC hw/intc/pl190.o CC hw/intc/xilinx_intc.o CC hw/intc/puv3_intc.o CC hw/intc/etraxfs_pic.o CC hw/intc/imx_avic.o CC hw/intc/lm32_pic.o CC hw/intc/realview_gic.o CC hw/intc/ioapic_common.o CC hw/intc/slavio_intctl.o CC hw/intc/arm_gic_common.o CC hw/intc/arm_gic.o CC hw/intc/arm_gicv2m.o CC hw/intc/arm_gicv3_common.o CC hw/intc/arm_gicv3.o CC hw/intc/arm_gicv3_dist.o CC hw/intc/arm_gicv3_redist.o CC hw/intc/arm_gicv3_its_common.o CC hw/intc/openpic.o CC hw/intc/intc.o CC hw/ipack/ipack.o CC hw/ipack/tpci200.o CC hw/ipmi/ipmi.o CC hw/ipmi/ipmi_bmc_extern.o CC hw/ipmi/ipmi_bmc_sim.o CC hw/ipmi/isa_ipmi_kcs.o CC hw/ipmi/isa_ipmi_bt.o CC hw/isa/isa-bus.o CC hw/isa/apm.o CC hw/isa/i82378.o CC hw/isa/pc87312.o CC hw/isa/piix4.o CC hw/isa/vt82c686.o CC hw/mem/pc-dimm.o CC hw/misc/applesmc.o CC hw/mem/nvdimm.o CC hw/misc/max111x.o CC hw/misc/tmp105.o CC hw/misc/debugexit.o CC hw/misc/pc-testdev.o CC hw/misc/sga.o CC hw/misc/pci-testdev.o CC hw/misc/arm_l2x0.o CC hw/misc/unimp.o CC hw/misc/arm_integrator_debug.o CC hw/misc/a9scu.o CC hw/misc/arm11scu.o CC hw/misc/puv3_pm.o CC hw/misc/macio/macio.o CC hw/misc/macio/cuda.o CC hw/misc/macio/mac_dbdma.o CC hw/net/dp8393x.o CC hw/net/ne2000.o CC hw/net/eepro100.o CC hw/net/pcnet-pci.o CC hw/net/pcnet.o CC hw/net/e1000.o CC hw/net/e1000x_common.o CC hw/net/net_tx_pkt.o CC hw/net/net_rx_pkt.o CC hw/net/e1000e.o CC hw/net/e1000e_core.o CC hw/net/rtl8139.o CC hw/net/vmxnet3.o CC hw/net/smc91c111.o CC hw/net/lan9118.o CC hw/net/ne2000-isa.o CC hw/net/opencores_eth.o CC hw/net/xgmac.o CC hw/net/mipsnet.o CC hw/net/xilinx_axienet.o CC hw/net/allwinner_emac.o CC hw/net/imx_fec.o CC hw/net/cadence_gem.o CC hw/net/stellaris_enet.o CC hw/net/lance.o CC hw/net/rocker/rocker.o CC hw/net/rocker/rocker_desc.o CC hw/net/rocker/rocker_fp.o CC hw/net/rocker/rocker_world.o CC hw/net/rocker/rocker_of_dpa.o CC hw/nvram/ds1225y.o CC hw/nvram/eeprom93xx.o CC hw/nvram/fw_cfg.o CC hw/nvram/chrp_nvram.o CC hw/nvram/mac_nvram.o CC hw/pci-bridge/pci_bridge_dev.o CC hw/pci-bridge/gen_pcie_root_port.o CC hw/pci-bridge/pcie_root_port.o CC hw/pci-bridge/pci_expander_bridge.o CC hw/pci-bridge/xio3130_upstream.o CC hw/pci-bridge/xio3130_downstream.o CC hw/pci-bridge/ioh3420.o CC hw/pci-bridge/i82801b11.o CC hw/pci-bridge/dec.o CC hw/pci-host/pam.o CC hw/pci-host/prep.o CC hw/pci-host/grackle.o CC hw/pci-host/uninorth.o CC hw/pci-host/ppce500.o CC hw/pci-host/versatile.o CC hw/pci-host/apb.o CC hw/pci-host/bonito.o CC hw/pci-host/piix.o CC hw/pci-host/q35.o CC hw/pci-host/gpex.o CC hw/pci/pci.o CC hw/pci/pci_bridge.o CC hw/pci/msix.o CC hw/pci/msi.o CC hw/pci/shpc.o CC hw/pci/slotid_cap.o CC hw/pci/pci_host.o CC hw/pci/pcie_host.o CC hw/pci/pcie.o CC hw/pci/pcie_aer.o CC hw/pci/pcie_port.o CC hw/pci/pci-stub.o CC hw/pcmcia/pcmcia.o CC hw/scsi/scsi-disk.o CC hw/scsi/scsi-generic.o CC hw/scsi/scsi-bus.o CC hw/scsi/lsi53c895a.o CC hw/scsi/mptsas.o CC hw/scsi/mptconfig.o CC hw/scsi/mptendian.o CC hw/scsi/megasas.o CC hw/scsi/vmw_pvscsi.o CC hw/scsi/esp.o CC hw/scsi/esp-pci.o CC hw/sd/pl181.o CC hw/sd/ssi-sd.o CC hw/sd/sd.o CC hw/sd/core.o CC hw/sd/sdhci.o CC hw/smbios/smbios_type_38.o CC hw/smbios/smbios.o CC hw/smbios/smbios-stub.o CC hw/ssi/pl022.o CC hw/smbios/smbios_type_38-stub.o CC hw/ssi/ssi.o CC hw/ssi/xilinx_spi.o CC hw/ssi/xilinx_spips.o CC hw/ssi/aspeed_smc.o CC hw/ssi/stm32f2xx_spi.o CC hw/timer/arm_timer.o CC hw/timer/arm_mptimer.o CC hw/timer/a9gtimer.o CC hw/timer/cadence_ttc.o CC hw/timer/ds1338.o CC hw/timer/hpet.o CC hw/timer/i8254_common.o CC hw/timer/i8254.o CC hw/timer/m48t59.o CC hw/timer/m48t59-isa.o CC hw/timer/pl031.o CC hw/timer/puv3_ost.o CC hw/timer/twl92230.o CC hw/timer/xilinx_timer.o CC hw/timer/slavio_timer.o CC hw/timer/etraxfs_timer.o CC hw/timer/grlib_gptimer.o CC hw/timer/imx_epit.o CC hw/timer/imx_gpt.o CC hw/timer/lm32_timer.o CC hw/timer/milkymist-sysctl.o CC hw/timer/stm32f2xx_timer.o CC hw/timer/aspeed_timer.o CC hw/timer/sun4v-rtc.o CC hw/tpm/tpm_tis.o CC hw/usb/core.o CC hw/usb/combined-packet.o CC hw/usb/bus.o CC hw/usb/libhw.o CC hw/usb/desc.o CC hw/usb/desc-msos.o CC hw/usb/hcd-uhci.o CC hw/usb/hcd-ohci.o CC hw/usb/hcd-ehci.o CC hw/usb/hcd-ehci-pci.o CC hw/usb/hcd-ehci-sysbus.o CC hw/usb/hcd-xhci.o CC hw/usb/hcd-musb.o CC hw/usb/dev-hub.o CC hw/usb/dev-hid.o CC hw/usb/dev-wacom.o CC hw/usb/dev-storage.o CC hw/usb/dev-uas.o CC hw/usb/dev-audio.o CC hw/usb/dev-serial.o CC hw/usb/dev-network.o CC hw/usb/dev-bluetooth.o CC hw/usb/dev-smartcard-reader.o CC hw/usb/ccid-card-passthru.o CC hw/usb/dev-mtp.o CC hw/usb/ccid-card-emulated.o CC hw/usb/redirect.o CC hw/usb/quirks.o CC hw/usb/host-libusb.o CC hw/usb/host-legacy.o CC hw/virtio/virtio-rng.o CC hw/virtio/virtio-pci.o CC hw/virtio/virtio-bus.o CC hw/virtio/virtio-mmio.o CC hw/virtio/vhost-stub.o CC hw/watchdog/watchdog.o CC hw/watchdog/wdt_i6300esb.o CC hw/watchdog/wdt_ib700.o CC hw/watchdog/wdt_diag288.o CC hw/watchdog/wdt_aspeed.o CC migration/migration.o CC migration/socket.o CC migration/fd.o CC migration/exec.o CC migration/tls.o CC migration/colo-comm.o CC migration/colo.o CC migration/colo-failover.o CC migration/vmstate.o CC migration/qemu-file.o CC migration/qemu-file-channel.o CC migration/xbzrle.o CC migration/postcopy-ram.o CC migration/qjson.o CC migration/block.o CC net/net.o CC net/queue.o CC net/checksum.o CC net/util.o CC net/hub.o CC net/socket.o CC net/dump.o CC net/eth.o CC net/l2tpv3.o CC net/tap.o CC net/vhost-user.o CC net/tap-linux.o CC net/slirp.o CC net/filter.o CC net/filter-buffer.o CC net/filter-mirror.o CC net/colo-compare.o CC net/colo.o CC net/filter-rewriter.o CC net/filter-replay.o CC qom/cpu.o CC replay/replay.o CC replay/replay-internal.o CC replay/replay-events.o CC replay/replay-time.o CC replay/replay-input.o CC replay/replay-char.o CC replay/replay-snapshot.o CC replay/replay-net.o CC slirp/cksum.o CC slirp/if.o CC slirp/ip_icmp.o CC slirp/ip6_icmp.o CC slirp/ip6_input.o CC slirp/ip6_output.o CC slirp/ip_input.o CC slirp/ip_output.o CC slirp/dnssearch.o CC slirp/dhcpv6.o CC slirp/slirp.o CC slirp/mbuf.o CC slirp/misc.o CC slirp/sbuf.o CC slirp/tcp_input.o CC slirp/socket.o CC slirp/tcp_output.o CC slirp/tcp_subr.o CC slirp/tcp_timer.o CC slirp/udp.o CC slirp/udp6.o CC slirp/bootp.o CC slirp/tftp.o CC slirp/arp_table.o CC slirp/ndp_table.o CC ui/keymaps.o CC ui/console.o CC ui/cursor.o CC ui/qemu-pixman.o CC ui/input.o CC ui/input-legacy.o CC ui/input-keymap.o CC ui/input-linux.o CC ui/sdl2-input.o CC ui/sdl2.o CC ui/sdl2-2d.o CC ui/sdl2-gl.o CC ui/x_keymap.o CC ui/curses.o CC ui/vnc-enc-zlib.o CC ui/vnc.o CC ui/vnc-enc-hextile.o CC ui/vnc-enc-tight.o CC ui/vnc-palette.o CC ui/vnc-enc-zrle.o CC ui/vnc-auth-vencrypt.o CC ui/vnc-auth-sasl.o CC ui/vnc-ws.o CC ui/vnc-jobs.o CC ui/gtk.o CC ui/shader.o VERT ui/shader/texture-blit-vert.h FRAG ui/shader/texture-blit-frag.h CC ui/egl-helpers.o CC ui/egl-context.o CC ui/gtk-gl-area.o CC chardev/char.o CC chardev/char-fd.o CC chardev/char-file.o CC chardev/char-io.o CC chardev/char-null.o CC chardev/char-mux.o CC chardev/char-parallel.o CC chardev/char-pipe.o CC chardev/char-pty.o CC chardev/char-ringbuf.o CC chardev/char-serial.o CC chardev/char-socket.o CC chardev/char-stdio.o CC chardev/char-udp.o LINK tests/qemu-iotests/socket_scm_helper CCAS s390-ccw/start.o CC s390-ccw/main.o GEN qemu-doc.html CC s390-ccw/bootmap.o GEN qemu-doc.txt CC s390-ccw/sclp-ascii.o CC s390-ccw/virtio.o CC s390-ccw/virtio-scsi.o GEN qemu.1 BUILD s390-ccw/s390-ccw.elf STRIP s390-ccw/s390-ccw.img GEN docs/qemu-qmp-ref.html GEN qemu-img.1 GEN docs/qemu-qmp-ref.txt GEN docs/qemu-qmp-ref.7 GEN docs/qemu-ga-ref.html GEN docs/qemu-ga-ref.txt GEN docs/qemu-ga-ref.7 CC qga/commands.o CC qga/guest-agent-command-state.o CC qga/main.o CC qga/commands-posix.o CC qga/channel-posix.o CC qga/qapi-generated/qga-qapi-types.o CC qga/qapi-generated/qga-qapi-visit.o CC qga/qapi-generated/qga-qmp-marshal.o CC qmp-introspect.o CC qapi-types.o CC qapi-visit.o CC qapi-event.o AR libqemustub.a CC qemu-img.o CC qmp-marshal.o CC ui/console-gl.o CC trace-root.o CC util/trace.o CC crypto/trace.o CC io/trace.o CC migration/trace.o CC block/trace.o CC backends/trace.o CC hw/block/trace.o CC hw/block/dataplane/trace.o CC hw/char/trace.o CC hw/intc/trace.o CC hw/net/trace.o CC hw/virtio/trace.o CC hw/audio/trace.o CC hw/misc/trace.o CC hw/usb/trace.o CC hw/nvram/trace.o CC hw/scsi/trace.o CC hw/display/trace.o CC hw/input/trace.o CC hw/timer/trace.o CC hw/dma/trace.o CC hw/sparc/trace.o CC hw/sd/trace.o CC hw/isa/trace.o CC hw/mem/trace.o CC hw/i386/trace.o CC hw/i386/xen/trace.o CC hw/ppc/trace.o CC hw/9pfs/trace.o CC hw/pci/trace.o CC hw/s390x/trace.o CC hw/acpi/trace.o CC hw/vfio/trace.o CC hw/arm/trace.o CC hw/alpha/trace.o CC hw/xen/trace.o CC ui/trace.o CC audio/trace.o CC net/trace.o CC target/arm/trace.o CC target/i386/trace.o CC target/sparc/trace.o CC target/s390x/trace.o CC target/ppc/trace.o CC linux-user/trace.o CC qom/trace.o CC qapi/trace.o AR libqemuutil.a LINK qemu-ga LINK ivshmem-client LINK ivshmem-server LINK qemu-nbd LINK qemu-img LINK qemu-io LINK fsdev/virtfs-proxy-helper LINK qemu-bridge-helper GEN cris-softmmu/hmp-commands.h GEN cris-softmmu/hmp-commands-info.h GEN alpha-softmmu/hmp-commands.h GEN arm-softmmu/hmp-commands.h GEN cris-softmmu/config-target.h GEN alpha-softmmu/hmp-commands-info.h CC cris-softmmu/exec.o GEN alpha-softmmu/config-target.h GEN arm-softmmu/hmp-commands-info.h GEN arm-softmmu/config-target.h CC arm-softmmu/exec.o GEN aarch64-softmmu/hmp-commands.h CC alpha-softmmu/exec.o GEN aarch64-softmmu/hmp-commands-info.h GEN aarch64-softmmu/config-target.h CC aarch64-softmmu/exec.o CC cris-softmmu/translate-all.o CC alpha-softmmu/translate-all.o CC arm-softmmu/translate-all.o CC cris-softmmu/cpu-exec.o CC arm-softmmu/cpu-exec.o CC aarch64-softmmu/translate-all.o CC cris-softmmu/translate-common.o CC alpha-softmmu/cpu-exec.o CC cris-softmmu/cpu-exec-common.o CC cris-softmmu/tcg/tcg.o CC arm-softmmu/translate-common.o CC aarch64-softmmu/cpu-exec.o CC alpha-softmmu/translate-common.o CC arm-softmmu/cpu-exec-common.o CC alpha-softmmu/cpu-exec-common.o CC arm-softmmu/tcg/tcg.o CC alpha-softmmu/tcg/tcg.o CC aarch64-softmmu/translate-common.o CC cris-softmmu/tcg/tcg-op.o CC aarch64-softmmu/cpu-exec-common.o CC aarch64-softmmu/tcg/tcg.o CC alpha-softmmu/tcg/tcg-op.o CC arm-softmmu/tcg/tcg-op.o CC cris-softmmu/tcg/optimize.o CC aarch64-softmmu/tcg/tcg-op.o CC alpha-softmmu/tcg/optimize.o CC cris-softmmu/tcg/tcg-common.o CC cris-softmmu/fpu/softfloat.o CC arm-softmmu/tcg/optimize.o CC alpha-softmmu/tcg/tcg-common.o CC alpha-softmmu/fpu/softfloat.o CC arm-softmmu/tcg/tcg-common.o CC aarch64-softmmu/tcg/optimize.o CC arm-softmmu/fpu/softfloat.o CC aarch64-softmmu/tcg/tcg-common.o CC cris-softmmu/disas.o CC aarch64-softmmu/fpu/softfloat.o CC cris-softmmu/tcg-runtime.o CC cris-softmmu/hax-stub.o CC alpha-softmmu/disas.o CC cris-softmmu/kvm-stub.o CC cris-softmmu/arch_init.o CC alpha-softmmu/tcg-runtime.o CC cris-softmmu/cpus.o CC alpha-softmmu/hax-stub.o CC arm-softmmu/disas.o CC alpha-softmmu/kvm-stub.o CC cris-softmmu/monitor.o CC arm-softmmu/tcg-runtime.o CC alpha-softmmu/arch_init.o GEN arm-softmmu/gdbstub-xml.c CC aarch64-softmmu/disas.o CC alpha-softmmu/cpus.o CC arm-softmmu/hax-stub.o CC arm-softmmu/kvm-stub.o CC aarch64-softmmu/tcg-runtime.o CC alpha-softmmu/monitor.o CC arm-softmmu/arch_init.o CC cris-softmmu/gdbstub.o GEN aarch64-softmmu/gdbstub-xml.c CC arm-softmmu/cpus.o CC aarch64-softmmu/hax-stub.o CC cris-softmmu/balloon.o CC aarch64-softmmu/kvm-stub.o CC cris-softmmu/ioport.o CC arm-softmmu/monitor.o CC aarch64-softmmu/arch_init.o CC cris-softmmu/numa.o CC aarch64-softmmu/cpus.o CC alpha-softmmu/gdbstub.o CC cris-softmmu/qtest.o CC aarch64-softmmu/monitor.o CC cris-softmmu/bootdevice.o CC alpha-softmmu/balloon.o CC arm-softmmu/gdbstub.o CC cris-softmmu/memory.o CC alpha-softmmu/ioport.o CC alpha-softmmu/numa.o CC arm-softmmu/balloon.o CC aarch64-softmmu/gdbstub.o CC arm-softmmu/ioport.o CC alpha-softmmu/qtest.o CC cris-softmmu/cputlb.o CC arm-softmmu/numa.o CC aarch64-softmmu/balloon.o CC alpha-softmmu/bootdevice.o CC aarch64-softmmu/ioport.o CC arm-softmmu/qtest.o CC alpha-softmmu/memory.o CC aarch64-softmmu/numa.o CC arm-softmmu/bootdevice.o CC cris-softmmu/memory_mapping.o CC aarch64-softmmu/qtest.o CC arm-softmmu/memory.o CC cris-softmmu/dump.o CC alpha-softmmu/cputlb.o CC aarch64-softmmu/bootdevice.o CC aarch64-softmmu/memory.o CC cris-softmmu/migration/ram.o CC arm-softmmu/cputlb.o CC alpha-softmmu/memory_mapping.o CC cris-softmmu/migration/savevm.o CC aarch64-softmmu/cputlb.o CC alpha-softmmu/dump.o CC alpha-softmmu/migration/ram.o CC arm-softmmu/memory_mapping.o CC cris-softmmu/xen-common-stub.o CC cris-softmmu/xen-hvm-stub.o CC arm-softmmu/dump.o CC aarch64-softmmu/memory_mapping.o CC cris-softmmu/hw/core/nmi.o CC aarch64-softmmu/dump.o CC alpha-softmmu/migration/savevm.o CC cris-softmmu/hw/core/generic-loader.o CC arm-softmmu/migration/ram.o CC cris-softmmu/hw/core/null-machine.o CC aarch64-softmmu/migration/ram.o CC cris-softmmu/hw/cpu/core.o CC alpha-softmmu/xen-common-stub.o CC cris-softmmu/hw/net/etraxfs_eth.o CC arm-softmmu/migration/savevm.o CC cris-softmmu/hw/net/vhost_net.o CC alpha-softmmu/xen-hvm-stub.o CC alpha-softmmu/hw/9pfs/virtio-9p-device.o CC cris-softmmu/hw/net/rocker/qmp-norocker.o CC aarch64-softmmu/migration/savevm.o CC alpha-softmmu/hw/block/virtio-blk.o CC cris-softmmu/hw/vfio/common.o CC arm-softmmu/xen-common-stub.o CC alpha-softmmu/hw/block/dataplane/virtio-blk.o CC arm-softmmu/xen-hvm-stub.o CC aarch64-softmmu/xen-common-stub.o CC cris-softmmu/hw/vfio/platform.o CC alpha-softmmu/hw/char/virtio-serial-bus.o CC arm-softmmu/hw/9pfs/virtio-9p-device.o CC aarch64-softmmu/xen-hvm-stub.o CC arm-softmmu/hw/adc/stm32f2xx_adc.o CC cris-softmmu/hw/vfio/spapr.o CC aarch64-softmmu/hw/9pfs/virtio-9p-device.o CC alpha-softmmu/hw/core/nmi.o CC arm-softmmu/hw/block/virtio-blk.o CC cris-softmmu/hw/cris/boot.o CC alpha-softmmu/hw/core/generic-loader.o CC aarch64-softmmu/hw/adc/stm32f2xx_adc.o CC cris-softmmu/hw/cris/axis_dev88.o CC alpha-softmmu/hw/core/null-machine.o CC aarch64-softmmu/hw/block/virtio-blk.o CC arm-softmmu/hw/block/dataplane/virtio-blk.o CC alpha-softmmu/hw/cpu/core.o CC cris-softmmu/target/cris/translate.o CC alpha-softmmu/hw/display/vga.o CC arm-softmmu/hw/char/exynos4210_uart.o CC aarch64-softmmu/hw/block/dataplane/virtio-blk.o CC aarch64-softmmu/hw/char/exynos4210_uart.o CC arm-softmmu/hw/char/omap_uart.o CC alpha-softmmu/hw/display/virtio-gpu.o CC aarch64-softmmu/hw/char/omap_uart.o CC arm-softmmu/hw/char/digic-uart.o CC aarch64-softmmu/hw/char/digic-uart.o CC cris-softmmu/target/cris/op_helper.o CC alpha-softmmu/hw/display/virtio-gpu-3d.o CC arm-softmmu/hw/char/stm32f2xx_usart.o CC aarch64-softmmu/hw/char/stm32f2xx_usart.o CC arm-softmmu/hw/char/bcm2835_aux.o CC cris-softmmu/target/cris/helper.o CC aarch64-softmmu/hw/char/bcm2835_aux.o CC arm-softmmu/hw/char/virtio-serial-bus.o CC cris-softmmu/target/cris/cpu.o CC alpha-softmmu/hw/display/virtio-gpu-pci.o CC aarch64-softmmu/hw/char/virtio-serial-bus.o CC cris-softmmu/target/cris/gdbstub.o CC arm-softmmu/hw/core/nmi.o CC alpha-softmmu/hw/misc/ivshmem.o CC cris-softmmu/target/cris/mmu.o CC arm-softmmu/hw/core/generic-loader.o CC cris-softmmu/target/cris/machine.o CC aarch64-softmmu/hw/core/nmi.o CC alpha-softmmu/hw/misc/edu.o CC arm-softmmu/hw/core/null-machine.o GEN trace/generated-helpers.c CC cris-softmmu/trace/control-target.o CC aarch64-softmmu/hw/core/generic-loader.o CC arm-softmmu/hw/cpu/arm11mpcore.o CC alpha-softmmu/hw/net/virtio-net.o CC cris-softmmu/trace/generated-helpers.o CC arm-softmmu/hw/cpu/realview_mpcore.o CC aarch64-softmmu/hw/core/null-machine.o LINK cris-softmmu/qemu-system-cris CC aarch64-softmmu/hw/cpu/arm11mpcore.o CC arm-softmmu/hw/cpu/a9mpcore.o CC aarch64-softmmu/hw/cpu/realview_mpcore.o CC alpha-softmmu/hw/net/vhost_net.o CC aarch64-softmmu/hw/cpu/a9mpcore.o CC arm-softmmu/hw/cpu/a15mpcore.o CC alpha-softmmu/hw/scsi/virtio-scsi.o CC aarch64-softmmu/hw/cpu/a15mpcore.o CC arm-softmmu/hw/cpu/core.o CC aarch64-softmmu/hw/cpu/core.o CC arm-softmmu/hw/display/omap_dss.o CC alpha-softmmu/hw/scsi/virtio-scsi-dataplane.o CC aarch64-softmmu/hw/display/omap_dss.o CC alpha-softmmu/hw/scsi/vhost-scsi.o CC arm-softmmu/hw/display/omap_lcdc.o CC alpha-softmmu/hw/timer/mc146818rtc.o GEN i386-softmmu/hmp-commands.h GEN i386-softmmu/hmp-commands-info.h CC aarch64-softmmu/hw/display/omap_lcdc.o GEN i386-softmmu/config-target.h CC i386-softmmu/exec.o CC arm-softmmu/hw/display/pxa2xx_lcd.o CC alpha-softmmu/hw/vfio/common.o CC aarch64-softmmu/hw/display/pxa2xx_lcd.o CC alpha-softmmu/hw/vfio/pci.o CC arm-softmmu/hw/display/bcm2835_fb.o CC i386-softmmu/translate-all.o CC arm-softmmu/hw/display/vga.o CC aarch64-softmmu/hw/display/bcm2835_fb.o CC alpha-softmmu/hw/vfio/pci-quirks.o CC i386-softmmu/cpu-exec.o CC aarch64-softmmu/hw/display/vga.o CC i386-softmmu/translate-common.o CC alpha-softmmu/hw/vfio/platform.o CC arm-softmmu/hw/display/virtio-gpu.o CC i386-softmmu/cpu-exec-common.o CC alpha-softmmu/hw/vfio/spapr.o CC aarch64-softmmu/hw/display/virtio-gpu.o CC alpha-softmmu/hw/virtio/virtio.o CC i386-softmmu/tcg/tcg.o CC arm-softmmu/hw/display/virtio-gpu-3d.o CC aarch64-softmmu/hw/display/virtio-gpu-3d.o CC alpha-softmmu/hw/virtio/virtio-balloon.o CC aarch64-softmmu/hw/display/virtio-gpu-pci.o CC arm-softmmu/hw/display/virtio-gpu-pci.o CC alpha-softmmu/hw/virtio/vhost.o CC aarch64-softmmu/hw/display/dpcd.o CC arm-softmmu/hw/dma/omap_dma.o CC aarch64-softmmu/hw/display/xlnx_dp.o CC alpha-softmmu/hw/virtio/vhost-backend.o CC i386-softmmu/tcg/tcg-op.o CC aarch64-softmmu/hw/dma/xlnx_dpdma.o CC arm-softmmu/hw/dma/soc_dma.o CC alpha-softmmu/hw/virtio/vhost-user.o CC arm-softmmu/hw/dma/pxa2xx_dma.o CC aarch64-softmmu/hw/dma/omap_dma.o CC arm-softmmu/hw/dma/bcm2835_dma.o CC alpha-softmmu/hw/virtio/vhost-vsock.o CC arm-softmmu/hw/gpio/omap_gpio.o CC aarch64-softmmu/hw/dma/soc_dma.o CC alpha-softmmu/hw/virtio/virtio-crypto.o CC aarch64-softmmu/hw/dma/pxa2xx_dma.o CC arm-softmmu/hw/gpio/imx_gpio.o CC alpha-softmmu/hw/virtio/virtio-crypto-pci.o CC arm-softmmu/hw/i2c/omap_i2c.o CC aarch64-softmmu/hw/dma/bcm2835_dma.o CC arm-softmmu/hw/input/pxa2xx_keypad.o CC alpha-softmmu/hw/alpha/dp264.o CC aarch64-softmmu/hw/gpio/omap_gpio.o CC arm-softmmu/hw/input/tsc210x.o CC alpha-softmmu/hw/alpha/pci.o CC alpha-softmmu/hw/alpha/typhoon.o CC i386-softmmu/tcg/optimize.o CC aarch64-softmmu/hw/gpio/imx_gpio.o CC arm-softmmu/hw/intc/armv7m_nvic.o CC aarch64-softmmu/hw/i2c/omap_i2c.o CC alpha-softmmu/target/alpha/machine.o CC aarch64-softmmu/hw/input/pxa2xx_keypad.o CC arm-softmmu/hw/intc/exynos4210_gic.o CC alpha-softmmu/target/alpha/translate.o CC aarch64-softmmu/hw/input/tsc210x.o CC arm-softmmu/hw/intc/exynos4210_combiner.o CC i386-softmmu/tcg/tcg-common.o CC i386-softmmu/fpu/softfloat.o CC arm-softmmu/hw/intc/omap_intc.o CC aarch64-softmmu/hw/intc/armv7m_nvic.o CC arm-softmmu/hw/intc/bcm2835_ic.o CC aarch64-softmmu/hw/intc/exynos4210_gic.o CC alpha-softmmu/target/alpha/helper.o CC arm-softmmu/hw/intc/bcm2836_control.o CC aarch64-softmmu/hw/intc/exynos4210_combiner.o CC alpha-softmmu/target/alpha/cpu.o CC arm-softmmu/hw/intc/allwinner-a10-pic.o CC aarch64-softmmu/hw/intc/omap_intc.o CC alpha-softmmu/target/alpha/int_helper.o CC alpha-softmmu/target/alpha/fpu_helper.o CC arm-softmmu/hw/intc/aspeed_vic.o CC aarch64-softmmu/hw/intc/bcm2835_ic.o CC alpha-softmmu/target/alpha/vax_helper.o CC arm-softmmu/hw/intc/arm_gicv3_cpuif.o CC aarch64-softmmu/hw/intc/bcm2836_control.o CC alpha-softmmu/target/alpha/sys_helper.o CC alpha-softmmu/target/alpha/mem_helper.o CC aarch64-softmmu/hw/intc/allwinner-a10-pic.o CC alpha-softmmu/target/alpha/gdbstub.o CC i386-softmmu/disas.o CC aarch64-softmmu/hw/intc/aspeed_vic.o GEN trace/generated-helpers.c CC aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o CC alpha-softmmu/trace/control-target.o CC i386-softmmu/tcg-runtime.o CC arm-softmmu/hw/misc/ivshmem.o CC alpha-softmmu/trace/generated-helpers.o CC i386-softmmu/hax-stub.o CC i386-softmmu/kvm-stub.o LINK alpha-softmmu/qemu-system-alpha CC arm-softmmu/hw/misc/arm_sysctl.o CC i386-softmmu/arch_init.o CC aarch64-softmmu/hw/misc/ivshmem.o CC arm-softmmu/hw/misc/cbus.o CC i386-softmmu/cpus.o CC aarch64-softmmu/hw/misc/arm_sysctl.o CC arm-softmmu/hw/misc/exynos4210_pmu.o CC aarch64-softmmu/hw/misc/cbus.o CC arm-softmmu/hw/misc/imx_ccm.o CC i386-softmmu/monitor.o CC i386-softmmu/gdbstub.o CC aarch64-softmmu/hw/misc/exynos4210_pmu.o CC aarch64-softmmu/hw/misc/imx_ccm.o CC arm-softmmu/hw/misc/imx31_ccm.o CC aarch64-softmmu/hw/misc/imx31_ccm.o CC arm-softmmu/hw/misc/imx25_ccm.o CC aarch64-softmmu/hw/misc/imx25_ccm.o CC arm-softmmu/hw/misc/imx6_ccm.o CC aarch64-softmmu/hw/misc/imx6_ccm.o CC arm-softmmu/hw/misc/imx6_src.o CC aarch64-softmmu/hw/misc/imx6_src.o CC i386-softmmu/balloon.o GEN lm32-softmmu/hmp-commands.h GEN lm32-softmmu/hmp-commands-info.h GEN lm32-softmmu/config-target.h CC arm-softmmu/hw/misc/mst_fpga.o CC aarch64-softmmu/hw/misc/mst_fpga.o CC lm32-softmmu/exec.o CC aarch64-softmmu/hw/misc/omap_clk.o CC arm-softmmu/hw/misc/omap_clk.o CC i386-softmmu/ioport.o CC arm-softmmu/hw/misc/omap_gpmc.o CC aarch64-softmmu/hw/misc/omap_gpmc.o CC i386-softmmu/numa.o CC arm-softmmu/hw/misc/omap_l4.o CC aarch64-softmmu/hw/misc/omap_l4.o CC aarch64-softmmu/hw/misc/omap_sdrc.o CC arm-softmmu/hw/misc/omap_sdrc.o CC aarch64-softmmu/hw/misc/omap_tap.o CC i386-softmmu/qtest.o CC aarch64-softmmu/hw/misc/bcm2835_mbox.o CC arm-softmmu/hw/misc/omap_tap.o CC lm32-softmmu/translate-all.o CC aarch64-softmmu/hw/misc/bcm2835_property.o CC i386-softmmu/bootdevice.o CC arm-softmmu/hw/misc/bcm2835_mbox.o CC lm32-softmmu/cpu-exec.o CC i386-softmmu/memory.o CC aarch64-softmmu/hw/misc/zynq_slcr.o CC arm-softmmu/hw/misc/bcm2835_property.o CC lm32-softmmu/translate-common.o CC lm32-softmmu/cpu-exec-common.o CC aarch64-softmmu/hw/misc/zynq-xadc.o CC arm-softmmu/hw/misc/zynq_slcr.o CC lm32-softmmu/tcg/tcg.o CC aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o CC arm-softmmu/hw/misc/zynq-xadc.o CC aarch64-softmmu/hw/misc/edu.o CC i386-softmmu/cputlb.o CC arm-softmmu/hw/misc/stm32f2xx_syscfg.o CC aarch64-softmmu/hw/misc/auxbus.o CC arm-softmmu/hw/misc/edu.o CC aarch64-softmmu/hw/misc/aspeed_scu.o CC aarch64-softmmu/hw/misc/aspeed_sdmc.o CC arm-softmmu/hw/misc/aspeed_scu.o CC aarch64-softmmu/hw/net/virtio-net.o CC lm32-softmmu/tcg/tcg-op.o CC arm-softmmu/hw/misc/aspeed_sdmc.o CC i386-softmmu/memory_mapping.o CC arm-softmmu/hw/net/virtio-net.o CC aarch64-softmmu/hw/net/vhost_net.o CC i386-softmmu/dump.o CC aarch64-softmmu/hw/pcmcia/pxa2xx.o CC arm-softmmu/hw/net/vhost_net.o CC aarch64-softmmu/hw/scsi/virtio-scsi.o CC i386-softmmu/migration/ram.o CC arm-softmmu/hw/pcmcia/pxa2xx.o CC aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o CC arm-softmmu/hw/scsi/virtio-scsi.o CC aarch64-softmmu/hw/scsi/vhost-scsi.o CC lm32-softmmu/tcg/optimize.o CC i386-softmmu/migration/savevm.o CC aarch64-softmmu/hw/sd/omap_mmc.o CC arm-softmmu/hw/scsi/virtio-scsi-dataplane.o CC arm-softmmu/hw/scsi/vhost-scsi.o CC aarch64-softmmu/hw/sd/pxa2xx_mmci.o CC lm32-softmmu/tcg/tcg-common.o CC arm-softmmu/hw/sd/omap_mmc.o CC i386-softmmu/xen-common-stub.o CC aarch64-softmmu/hw/ssi/omap_spi.o CC lm32-softmmu/fpu/softfloat.o CC i386-softmmu/xen-hvm-stub.o CC arm-softmmu/hw/sd/pxa2xx_mmci.o CC i386-softmmu/hw/9pfs/virtio-9p-device.o CC aarch64-softmmu/hw/ssi/imx_spi.o CC arm-softmmu/hw/ssi/omap_spi.o CC i386-softmmu/hw/block/virtio-blk.o CC aarch64-softmmu/hw/timer/exynos4210_mct.o CC arm-softmmu/hw/ssi/imx_spi.o CC i386-softmmu/hw/block/dataplane/virtio-blk.o CC aarch64-softmmu/hw/timer/exynos4210_pwm.o CC arm-softmmu/hw/timer/exynos4210_mct.o CC aarch64-softmmu/hw/timer/exynos4210_rtc.o CC i386-softmmu/hw/char/virtio-serial-bus.o CC arm-softmmu/hw/timer/exynos4210_pwm.o CC arm-softmmu/hw/timer/exynos4210_rtc.o CC aarch64-softmmu/hw/timer/omap_gptimer.o CC i386-softmmu/hw/core/nmi.o CC arm-softmmu/hw/timer/omap_gptimer.o CC i386-softmmu/hw/core/generic-loader.o CC aarch64-softmmu/hw/timer/omap_synctimer.o CC arm-softmmu/hw/timer/omap_synctimer.o CC lm32-softmmu/disas.o CC aarch64-softmmu/hw/timer/pxa2xx_timer.o CC arm-softmmu/hw/timer/pxa2xx_timer.o CC i386-softmmu/hw/core/null-machine.o CC lm32-softmmu/tcg-runtime.o CC aarch64-softmmu/hw/timer/digic-timer.o CC arm-softmmu/hw/timer/digic-timer.o CC i386-softmmu/hw/cpu/core.o CC aarch64-softmmu/hw/timer/allwinner-a10-pit.o CC arm-softmmu/hw/timer/allwinner-a10-pit.o CC lm32-softmmu/hax-stub.o CC i386-softmmu/hw/display/vga.o CC aarch64-softmmu/hw/usb/tusb6010.o CC lm32-softmmu/kvm-stub.o CC arm-softmmu/hw/usb/tusb6010.o CC lm32-softmmu/arch_init.o CC aarch64-softmmu/hw/vfio/common.o CC arm-softmmu/hw/vfio/common.o CC lm32-softmmu/cpus.o CC i386-softmmu/hw/display/virtio-gpu.o CC arm-softmmu/hw/vfio/pci.o CC lm32-softmmu/monitor.o CC aarch64-softmmu/hw/vfio/pci.o CC arm-softmmu/hw/vfio/pci-quirks.o CC i386-softmmu/hw/display/virtio-gpu-3d.o CC aarch64-softmmu/hw/vfio/pci-quirks.o CC arm-softmmu/hw/vfio/platform.o CC lm32-softmmu/gdbstub.o CC aarch64-softmmu/hw/vfio/platform.o CC i386-softmmu/hw/display/virtio-gpu-pci.o CC arm-softmmu/hw/vfio/calxeda-xgmac.o CC arm-softmmu/hw/vfio/amd-xgbe.o CC aarch64-softmmu/hw/vfio/calxeda-xgmac.o CC lm32-softmmu/balloon.o CC arm-softmmu/hw/vfio/spapr.o CC aarch64-softmmu/hw/vfio/amd-xgbe.o CC i386-softmmu/hw/display/virtio-vga.o CC aarch64-softmmu/hw/vfio/spapr.o CC lm32-softmmu/ioport.o CC arm-softmmu/hw/virtio/virtio.o CC aarch64-softmmu/hw/virtio/virtio.o CC i386-softmmu/hw/intc/apic.o CC lm32-softmmu/numa.o CC lm32-softmmu/qtest.o CC arm-softmmu/hw/virtio/virtio-balloon.o CC i386-softmmu/hw/intc/apic_common.o CC aarch64-softmmu/hw/virtio/virtio-balloon.o CC lm32-softmmu/bootdevice.o CC arm-softmmu/hw/virtio/vhost.o CC lm32-softmmu/memory.o CC i386-softmmu/hw/intc/ioapic.o CC aarch64-softmmu/hw/virtio/vhost.o CC i386-softmmu/hw/isa/lpc_ich9.o CC arm-softmmu/hw/virtio/vhost-backend.o CC aarch64-softmmu/hw/virtio/vhost-backend.o CC arm-softmmu/hw/virtio/vhost-user.o CC i386-softmmu/hw/misc/vmport.o CC aarch64-softmmu/hw/virtio/vhost-user.o CC lm32-softmmu/cputlb.o CC i386-softmmu/hw/misc/ivshmem.o CC arm-softmmu/hw/virtio/vhost-vsock.o CC aarch64-softmmu/hw/virtio/vhost-vsock.o CC arm-softmmu/hw/virtio/virtio-crypto.o CC i386-softmmu/hw/misc/pvpanic.o CC aarch64-softmmu/hw/virtio/virtio-crypto.o CC arm-softmmu/hw/virtio/virtio-crypto-pci.o CC i386-softmmu/hw/misc/edu.o CC arm-softmmu/hw/arm/boot.o CC aarch64-softmmu/hw/virtio/virtio-crypto-pci.o CC lm32-softmmu/memory_mapping.o CC i386-softmmu/hw/net/virtio-net.o CC arm-softmmu/hw/arm/collie.o CC lm32-softmmu/dump.o CC aarch64-softmmu/hw/arm/boot.o CC arm-softmmu/hw/arm/exynos4_boards.o CC arm-softmmu/hw/arm/gumstix.o CC i386-softmmu/hw/net/vhost_net.o CC aarch64-softmmu/hw/arm/collie.o CC lm32-softmmu/migration/ram.o CC arm-softmmu/hw/arm/highbank.o CC i386-softmmu/hw/scsi/virtio-scsi.o CC aarch64-softmmu/hw/arm/exynos4_boards.o CC aarch64-softmmu/hw/arm/gumstix.o CC arm-softmmu/hw/arm/digic_boards.o CC i386-softmmu/hw/scsi/virtio-scsi-dataplane.o CC aarch64-softmmu/hw/arm/highbank.o CC arm-softmmu/hw/arm/integratorcp.o CC lm32-softmmu/migration/savevm.o CC i386-softmmu/hw/scsi/vhost-scsi.o CC arm-softmmu/hw/arm/mainstone.o CC aarch64-softmmu/hw/arm/digic_boards.o CC aarch64-softmmu/hw/arm/integratorcp.o CC arm-softmmu/hw/arm/musicpal.o CC i386-softmmu/hw/timer/mc146818rtc.o CC aarch64-softmmu/hw/arm/mainstone.o CC aarch64-softmmu/hw/arm/musicpal.o CC lm32-softmmu/xen-common-stub.o CC lm32-softmmu/xen-hvm-stub.o CC arm-softmmu/hw/arm/nseries.o CC i386-softmmu/hw/vfio/common.o CC lm32-softmmu/hw/core/nmi.o CC aarch64-softmmu/hw/arm/nseries.o CC arm-softmmu/hw/arm/omap_sx1.o CC lm32-softmmu/hw/core/generic-loader.o CC i386-softmmu/hw/vfio/pci.o CC lm32-softmmu/hw/core/null-machine.o CC aarch64-softmmu/hw/arm/omap_sx1.o CC arm-softmmu/hw/arm/palm.o CC lm32-softmmu/hw/cpu/core.o CC aarch64-softmmu/hw/arm/palm.o CC arm-softmmu/hw/arm/realview.o CC lm32-softmmu/hw/input/milkymist-softusb.o CC arm-softmmu/hw/arm/spitz.o CC i386-softmmu/hw/vfio/pci-quirks.o CC aarch64-softmmu/hw/arm/realview.o CC lm32-softmmu/hw/misc/milkymist-hpdmc.o CC arm-softmmu/hw/arm/stellaris.o CC aarch64-softmmu/hw/arm/spitz.o CC i386-softmmu/hw/vfio/platform.o CC lm32-softmmu/hw/misc/milkymist-pfpu.o CC arm-softmmu/hw/arm/tosa.o CC i386-softmmu/hw/vfio/spapr.o CC arm-softmmu/hw/arm/versatilepb.o CC aarch64-softmmu/hw/arm/stellaris.o CC i386-softmmu/hw/virtio/virtio.o CC lm32-softmmu/hw/net/milkymist-minimac2.o CC arm-softmmu/hw/arm/vexpress.o CC arm-softmmu/hw/arm/virt.o CC aarch64-softmmu/hw/arm/tosa.o CC lm32-softmmu/hw/net/vhost_net.o CC i386-softmmu/hw/virtio/virtio-balloon.o CC aarch64-softmmu/hw/arm/versatilepb.o CC lm32-softmmu/hw/net/rocker/qmp-norocker.o CC arm-softmmu/hw/arm/xilinx_zynq.o CC aarch64-softmmu/hw/arm/vexpress.o CC i386-softmmu/hw/virtio/vhost.o CC arm-softmmu/hw/arm/z2.o CC lm32-softmmu/hw/sd/milkymist-memcard.o CC aarch64-softmmu/hw/arm/virt.o CC lm32-softmmu/hw/vfio/common.o CC arm-softmmu/hw/arm/virt-acpi-build.o CC i386-softmmu/hw/virtio/vhost-backend.o CC arm-softmmu/hw/arm/netduino2.o CC lm32-softmmu/hw/vfio/platform.o CC aarch64-softmmu/hw/arm/xilinx_zynq.o CC i386-softmmu/hw/virtio/vhost-user.o CC arm-softmmu/hw/arm/sysbus-fdt.o CC lm32-softmmu/hw/vfio/spapr.o CC aarch64-softmmu/hw/arm/z2.o CC i386-softmmu/hw/virtio/vhost-vsock.o CC i386-softmmu/hw/virtio/virtio-crypto.o CC arm-softmmu/hw/arm/armv7m.o CC aarch64-softmmu/hw/arm/virt-acpi-build.o CC lm32-softmmu/hw/lm32/lm32_boards.o CC arm-softmmu/hw/arm/exynos4210.o CC i386-softmmu/hw/virtio/virtio-crypto-pci.o CC lm32-softmmu/hw/lm32/milkymist.o CC aarch64-softmmu/hw/arm/netduino2.o CC arm-softmmu/hw/arm/pxa2xx.o CC i386-softmmu/hw/i386/multiboot.o CC aarch64-softmmu/hw/arm/sysbus-fdt.o CC lm32-softmmu/target/lm32/translate.o CC i386-softmmu/hw/i386/pc.o CC aarch64-softmmu/hw/arm/armv7m.o CC lm32-softmmu/target/lm32/op_helper.o CC arm-softmmu/hw/arm/pxa2xx_gpio.o CC aarch64-softmmu/hw/arm/exynos4210.o CC i386-softmmu/hw/i386/pc_piix.o CC aarch64-softmmu/hw/arm/pxa2xx.o CC arm-softmmu/hw/arm/pxa2xx_pic.o CC lm32-softmmu/target/lm32/helper.o CC arm-softmmu/hw/arm/digic.o CC i386-softmmu/hw/i386/pc_q35.o CC arm-softmmu/hw/arm/omap1.o CC lm32-softmmu/target/lm32/cpu.o CC i386-softmmu/hw/i386/pc_sysfw.o CC aarch64-softmmu/hw/arm/pxa2xx_gpio.o CC lm32-softmmu/target/lm32/gdbstub.o CC i386-softmmu/hw/i386/x86-iommu.o CC aarch64-softmmu/hw/arm/pxa2xx_pic.o CC i386-softmmu/hw/i386/intel_iommu.o CC lm32-softmmu/target/lm32/lm32-semi.o CC aarch64-softmmu/hw/arm/digic.o CC arm-softmmu/hw/arm/omap2.o CC aarch64-softmmu/hw/arm/omap1.o CC lm32-softmmu/target/lm32/machine.o CC i386-softmmu/hw/i386/amd_iommu.o GEN trace/generated-helpers.c CC lm32-softmmu/trace/control-target.o CC arm-softmmu/hw/arm/strongarm.o CC i386-softmmu/hw/i386/kvmvapic.o CC aarch64-softmmu/hw/arm/omap2.o CC arm-softmmu/hw/arm/allwinner-a10.o CC lm32-softmmu/trace/generated-helpers.o CC i386-softmmu/hw/i386/acpi-build.o CC arm-softmmu/hw/arm/cubieboard.o LINK lm32-softmmu/qemu-system-lm32 CC arm-softmmu/hw/arm/bcm2835_peripherals.o CC aarch64-softmmu/hw/arm/strongarm.o CC i386-softmmu/hw/i386/pci-assign-load-rom.o CC arm-softmmu/hw/arm/bcm2836.o CC arm-softmmu/hw/arm/raspi.o CC arm-softmmu/hw/arm/stm32f205_soc.o CC aarch64-softmmu/hw/arm/allwinner-a10.o CC i386-softmmu/target/i386/translate.o CC aarch64-softmmu/hw/arm/cubieboard.o CC arm-softmmu/hw/arm/fsl-imx25.o CC arm-softmmu/hw/arm/imx25_pdk.o CC aarch64-softmmu/hw/arm/bcm2835_peripherals.o CC arm-softmmu/hw/arm/fsl-imx31.o CC arm-softmmu/hw/arm/kzm.o CC aarch64-softmmu/hw/arm/bcm2836.o CC arm-softmmu/hw/arm/fsl-imx6.o CC arm-softmmu/hw/arm/sabrelite.o CC aarch64-softmmu/hw/arm/raspi.o CC aarch64-softmmu/hw/arm/stm32f205_soc.o CC arm-softmmu/hw/arm/aspeed_soc.o CC aarch64-softmmu/hw/arm/xlnx-zynqmp.o CC arm-softmmu/hw/arm/aspeed.o CC arm-softmmu/target/arm/arm-semi.o GEN m68k-softmmu/hmp-commands.h GEN m68k-softmmu/hmp-commands-info.h GEN m68k-softmmu/config-target.h CC m68k-softmmu/exec.o CC aarch64-softmmu/hw/arm/xlnx-ep108.o CC arm-softmmu/target/arm/machine.o CC aarch64-softmmu/hw/arm/fsl-imx25.o CC arm-softmmu/target/arm/psci.o CC aarch64-softmmu/hw/arm/imx25_pdk.o CC arm-softmmu/target/arm/arch_dump.o CC aarch64-softmmu/hw/arm/fsl-imx31.o CC m68k-softmmu/translate-all.o CC arm-softmmu/target/arm/monitor.o CC aarch64-softmmu/hw/arm/kzm.o CC arm-softmmu/target/arm/kvm-stub.o CC aarch64-softmmu/hw/arm/fsl-imx6.o CC arm-softmmu/target/arm/translate.o CC m68k-softmmu/cpu-exec.o CC aarch64-softmmu/hw/arm/sabrelite.o CC i386-softmmu/target/i386/helper.o CC aarch64-softmmu/hw/arm/aspeed_soc.o CC m68k-softmmu/translate-common.o CC aarch64-softmmu/hw/arm/aspeed.o CC m68k-softmmu/cpu-exec-common.o CC i386-softmmu/target/i386/cpu.o CC m68k-softmmu/tcg/tcg.o CC aarch64-softmmu/target/arm/arm-semi.o CC i386-softmmu/target/i386/bpt_helper.o CC aarch64-softmmu/target/arm/machine.o CC i386-softmmu/target/i386/excp_helper.o CC aarch64-softmmu/target/arm/psci.o CC i386-softmmu/target/i386/fpu_helper.o CC m68k-softmmu/tcg/tcg-op.o CC aarch64-softmmu/target/arm/arch_dump.o CC aarch64-softmmu/target/arm/monitor.o CC aarch64-softmmu/target/arm/kvm-stub.o CC aarch64-softmmu/target/arm/translate.o CC i386-softmmu/target/i386/cc_helper.o CC m68k-softmmu/tcg/optimize.o CC arm-softmmu/target/arm/op_helper.o CC i386-softmmu/target/i386/int_helper.o CC i386-softmmu/target/i386/svm_helper.o CC i386-softmmu/target/i386/smm_helper.o CC i386-softmmu/target/i386/misc_helper.o CC m68k-softmmu/tcg/tcg-common.o CC arm-softmmu/target/arm/helper.o CC m68k-softmmu/fpu/softfloat.o CC i386-softmmu/target/i386/mem_helper.o CC i386-softmmu/target/i386/seg_helper.o CC m68k-softmmu/disas.o CC arm-softmmu/target/arm/cpu.o CC m68k-softmmu/tcg-runtime.o GEN m68k-softmmu/gdbstub-xml.c CC m68k-softmmu/hax-stub.o CC m68k-softmmu/kvm-stub.o CC aarch64-softmmu/target/arm/op_helper.o CC arm-softmmu/target/arm/neon_helper.o CC m68k-softmmu/arch_init.o CC i386-softmmu/target/i386/mpx_helper.o CC m68k-softmmu/cpus.o CC aarch64-softmmu/target/arm/helper.o CC i386-softmmu/target/i386/gdbstub.o CC m68k-softmmu/monitor.o CC arm-softmmu/target/arm/iwmmxt_helper.o CC i386-softmmu/target/i386/machine.o CC i386-softmmu/target/i386/arch_memory_mapping.o CC arm-softmmu/target/arm/gdbstub.o CC i386-softmmu/target/i386/arch_dump.o CC m68k-softmmu/gdbstub.o CC arm-softmmu/target/arm/crypto_helper.o CC i386-softmmu/target/i386/monitor.o CC m68k-softmmu/balloon.o CC i386-softmmu/target/i386/kvm-stub.o CC arm-softmmu/target/arm/arm-powerctl.o CC m68k-softmmu/ioport.o GEN trace/generated-helpers.c CC aarch64-softmmu/target/arm/cpu.o CC i386-softmmu/trace/control-target.o GEN trace/generated-helpers.c CC arm-softmmu/trace/control-target.o CC m68k-softmmu/numa.o CC i386-softmmu/trace/generated-helpers.o CC arm-softmmu/gdbstub-xml.o CC aarch64-softmmu/target/arm/neon_helper.o LINK i386-softmmu/qemu-system-i386 CC m68k-softmmu/qtest.o CC arm-softmmu/trace/generated-helpers.o CC m68k-softmmu/bootdevice.o CC m68k-softmmu/memory.o LINK arm-softmmu/qemu-system-arm CC aarch64-softmmu/target/arm/iwmmxt_helper.o CC m68k-softmmu/cputlb.o CC aarch64-softmmu/target/arm/gdbstub.o CC m68k-softmmu/memory_mapping.o GEN microblazeel-softmmu/hmp-commands.h GEN microblazeel-softmmu/hmp-commands-info.h GEN microblazeel-softmmu/config-target.h CC microblazeel-softmmu/exec.o CC aarch64-softmmu/target/arm/cpu64.o CC m68k-softmmu/dump.o CC aarch64-softmmu/target/arm/translate-a64.o GEN microblaze-softmmu/hmp-commands.h GEN microblaze-softmmu/hmp-commands-info.h GEN microblaze-softmmu/config-target.h CC microblaze-softmmu/exec.o CC m68k-softmmu/migration/ram.o CC microblazeel-softmmu/translate-all.o CC m68k-softmmu/migration/savevm.o CC microblazeel-softmmu/cpu-exec.o CC microblaze-softmmu/translate-all.o CC microblaze-softmmu/cpu-exec.o CC microblazeel-softmmu/translate-common.o CC m68k-softmmu/xen-common-stub.o CC microblazeel-softmmu/cpu-exec-common.o CC microblaze-softmmu/translate-common.o CC microblazeel-softmmu/tcg/tcg.o CC m68k-softmmu/xen-hvm-stub.o CC microblaze-softmmu/cpu-exec-common.o CC m68k-softmmu/hw/char/mcf_uart.o CC m68k-softmmu/hw/core/nmi.o CC microblaze-softmmu/tcg/tcg.o CC m68k-softmmu/hw/core/generic-loader.o CC aarch64-softmmu/target/arm/helper-a64.o CC m68k-softmmu/hw/core/null-machine.o CC aarch64-softmmu/target/arm/gdbstub64.o CC m68k-softmmu/hw/cpu/core.o CC microblazeel-softmmu/tcg/tcg-op.o CC aarch64-softmmu/target/arm/crypto_helper.o CC m68k-softmmu/hw/net/mcf_fec.o CC microblaze-softmmu/tcg/tcg-op.o CC aarch64-softmmu/target/arm/arm-powerctl.o CC m68k-softmmu/hw/net/vhost_net.o CC m68k-softmmu/hw/net/rocker/qmp-norocker.o GEN trace/generated-helpers.c CC aarch64-softmmu/trace/control-target.o CC m68k-softmmu/hw/vfio/common.o CC aarch64-softmmu/gdbstub-xml.o CC aarch64-softmmu/trace/generated-helpers.o CC m68k-softmmu/hw/vfio/platform.o CC microblazeel-softmmu/tcg/optimize.o LINK aarch64-softmmu/qemu-system-aarch64 CC m68k-softmmu/hw/vfio/spapr.o CC m68k-softmmu/hw/m68k/an5206.o CC microblaze-softmmu/tcg/optimize.o CC microblazeel-softmmu/tcg/tcg-common.o CC m68k-softmmu/hw/m68k/mcf5208.o CC m68k-softmmu/hw/m68k/mcf5206.o CC microblazeel-softmmu/fpu/softfloat.o CC microblaze-softmmu/tcg/tcg-common.o CC m68k-softmmu/hw/m68k/mcf_intc.o CC m68k-softmmu/target/m68k/m68k-semi.o CC microblaze-softmmu/fpu/softfloat.o CC microblaze-softmmu/disas.o CC m68k-softmmu/target/m68k/translate.o CC m68k-softmmu/target/m68k/op_helper.o CC microblaze-softmmu/tcg-runtime.o CC microblazeel-softmmu/disas.o CC microblazeel-softmmu/tcg-runtime.o CC microblaze-softmmu/hax-stub.o GEN mips64el-softmmu/hmp-commands.h GEN mips64el-softmmu/hmp-commands-info.h CC microblazeel-softmmu/hax-stub.o CC microblaze-softmmu/kvm-stub.o GEN mips64el-softmmu/config-target.h CC mips64el-softmmu/exec.o CC m68k-softmmu/target/m68k/helper.o CC microblazeel-softmmu/kvm-stub.o CC microblaze-softmmu/arch_init.o CC microblazeel-softmmu/arch_init.o CC m68k-softmmu/target/m68k/cpu.o CC microblaze-softmmu/cpus.o CC m68k-softmmu/target/m68k/gdbstub.o CC microblazeel-softmmu/cpus.o CC microblaze-softmmu/monitor.o GEN trace/generated-helpers.c CC m68k-softmmu/trace/control-target.o CC microblazeel-softmmu/monitor.o CC m68k-softmmu/gdbstub-xml.o CC mips64el-softmmu/translate-all.o CC m68k-softmmu/trace/generated-helpers.o CC mips64el-softmmu/cpu-exec.o LINK m68k-softmmu/qemu-system-m68k CC mips64el-softmmu/translate-common.o CC microblaze-softmmu/gdbstub.o CC microblazeel-softmmu/gdbstub.o CC mips64el-softmmu/cpu-exec-common.o CC microblaze-softmmu/balloon.o CC mips64el-softmmu/tcg/tcg.o CC microblazeel-softmmu/balloon.o CC mips64el-softmmu/tcg/tcg-op.o CC microblazeel-softmmu/ioport.o CC microblaze-softmmu/ioport.o CC microblazeel-softmmu/numa.o CC microblaze-softmmu/numa.o CC microblazeel-softmmu/qtest.o CC microblaze-softmmu/qtest.o CC microblazeel-softmmu/bootdevice.o CC mips64el-softmmu/tcg/optimize.o CC microblaze-softmmu/bootdevice.o CC microblazeel-softmmu/memory.o CC microblaze-softmmu/memory.o CC mips64el-softmmu/tcg/tcg-common.o GEN mips64-softmmu/hmp-commands.h GEN mips64-softmmu/hmp-commands-info.h GEN mips64-softmmu/config-target.h CC mips64-softmmu/exec.o CC mips64el-softmmu/fpu/softfloat.o CC microblazeel-softmmu/cputlb.o CC microblaze-softmmu/cputlb.o CC microblaze-softmmu/memory_mapping.o CC mips64-softmmu/translate-all.o CC microblazeel-softmmu/memory_mapping.o CC microblaze-softmmu/dump.o CC microblazeel-softmmu/dump.o CC mips64-softmmu/cpu-exec.o CC microblaze-softmmu/migration/ram.o CC mips64-softmmu/translate-common.o CC mips64el-softmmu/disas.o CC microblazeel-softmmu/migration/ram.o CC mips64-softmmu/cpu-exec-common.o CC mips64-softmmu/tcg/tcg.o CC mips64el-softmmu/tcg-runtime.o CC microblazeel-softmmu/migration/savevm.o CC microblaze-softmmu/migration/savevm.o CC mips64el-softmmu/hax-stub.o CC mips64el-softmmu/kvm-stub.o CC microblazeel-softmmu/xen-common-stub.o CC microblaze-softmmu/xen-common-stub.o CC microblazeel-softmmu/xen-hvm-stub.o CC mips64el-softmmu/arch_init.o CC microblaze-softmmu/xen-hvm-stub.o CC microblazeel-softmmu/hw/core/nmi.o CC mips64el-softmmu/cpus.o CC microblaze-softmmu/hw/core/nmi.o CC microblazeel-softmmu/hw/core/generic-loader.o CC mips64-softmmu/tcg/tcg-op.o CC microblaze-softmmu/hw/core/generic-loader.o CC microblazeel-softmmu/hw/core/null-machine.o CC mips64el-softmmu/monitor.o CC microblaze-softmmu/hw/core/null-machine.o CC microblazeel-softmmu/hw/cpu/core.o CC microblaze-softmmu/hw/cpu/core.o CC microblaze-softmmu/hw/net/xilinx_ethlite.o CC microblazeel-softmmu/hw/net/xilinx_ethlite.o CC microblaze-softmmu/hw/net/vhost_net.o CC microblaze-softmmu/hw/net/rocker/qmp-norocker.o CC microblazeel-softmmu/hw/net/vhost_net.o CC microblaze-softmmu/hw/vfio/common.o CC microblazeel-softmmu/hw/net/rocker/qmp-norocker.o CC microblazeel-softmmu/hw/vfio/common.o CC mips64el-softmmu/gdbstub.o CC microblaze-softmmu/hw/vfio/platform.o CC microblazeel-softmmu/hw/vfio/platform.o CC mips64el-softmmu/balloon.o CC microblazeel-softmmu/hw/vfio/spapr.o CC mips64-softmmu/tcg/optimize.o CC mips64el-softmmu/ioport.o CC microblazeel-softmmu/hw/microblaze/petalogix_s3adsp1800_mmu.o CC microblaze-softmmu/hw/vfio/spapr.o CC mips64el-softmmu/numa.o CC microblaze-softmmu/hw/microblaze/petalogix_s3adsp1800_mmu.o CC microblazeel-softmmu/hw/microblaze/petalogix_ml605_mmu.o CC microblaze-softmmu/hw/microblaze/petalogix_ml605_mmu.o CC mips64el-softmmu/qtest.o CC microblazeel-softmmu/hw/microblaze/boot.o CC microblaze-softmmu/hw/microblaze/boot.o CC microblazeel-softmmu/target/microblaze/translate.o CC mips64-softmmu/tcg/tcg-common.o CC mips64el-softmmu/bootdevice.o CC microblaze-softmmu/target/microblaze/translate.o CC mips64-softmmu/fpu/softfloat.o CC mips64el-softmmu/memory.o CC microblazeel-softmmu/target/microblaze/op_helper.o CC microblaze-softmmu/target/microblaze/op_helper.o CC microblazeel-softmmu/target/microblaze/helper.o CC mips64el-softmmu/cputlb.o CC microblaze-softmmu/target/microblaze/helper.o CC microblazeel-softmmu/target/microblaze/cpu.o CC microblaze-softmmu/target/microblaze/cpu.o CC microblazeel-softmmu/target/microblaze/gdbstub.o CC microblaze-softmmu/target/microblaze/gdbstub.o CC microblazeel-softmmu/target/microblaze/mmu.o CC microblaze-softmmu/target/microblaze/mmu.o CC mips64-softmmu/disas.o GEN trace/generated-helpers.c GEN trace/generated-helpers.c CC microblazeel-softmmu/trace/control-target.o CC microblaze-softmmu/trace/control-target.o CC mips64el-softmmu/memory_mapping.o CC mips64-softmmu/tcg-runtime.o CC microblazeel-softmmu/trace/generated-helpers.o CC microblaze-softmmu/trace/generated-helpers.o CC mips64el-softmmu/dump.o CC mips64-softmmu/hax-stub.o LINK microblazeel-softmmu/qemu-system-microblazeel CC mips64-softmmu/kvm-stub.o LINK microblaze-softmmu/qemu-system-microblaze CC mips64-softmmu/arch_init.o CC mips64el-softmmu/migration/ram.o CC mips64-softmmu/cpus.o CC mips64el-softmmu/migration/savevm.o CC mips64el-softmmu/xen-common-stub.o CC mips64-softmmu/monitor.o CC mips64el-softmmu/xen-hvm-stub.o CC mips64el-softmmu/hw/9pfs/virtio-9p-device.o CC mips64el-softmmu/hw/block/virtio-blk.o GEN mips-softmmu/hmp-commands.h GEN mips-softmmu/hmp-commands-info.h GEN mips-softmmu/config-target.h CC mips-softmmu/exec.o GEN mipsel-softmmu/hmp-commands.h GEN mipsel-softmmu/hmp-commands-info.h CC mips64el-softmmu/hw/block/dataplane/virtio-blk.o GEN mipsel-softmmu/config-target.h CC mipsel-softmmu/exec.o CC mips64el-softmmu/hw/char/virtio-serial-bus.o CC mips64-softmmu/gdbstub.o CC mips64el-softmmu/hw/core/nmi.o CC mips64-softmmu/balloon.o CC mips-softmmu/translate-all.o CC mips64el-softmmu/hw/core/generic-loader.o CC mips64-softmmu/ioport.o CC mipsel-softmmu/translate-all.o CC mips64-softmmu/numa.o CC mips64el-softmmu/hw/core/null-machine.o CC mips-softmmu/cpu-exec.o CC mips64el-softmmu/hw/cpu/core.o CC mips64-softmmu/qtest.o CC mipsel-softmmu/cpu-exec.o CC mips64el-softmmu/hw/display/vga.o CC mips-softmmu/translate-common.o CC mips64-softmmu/bootdevice.o CC mips-softmmu/cpu-exec-common.o CC mipsel-softmmu/translate-common.o CC mips64-softmmu/memory.o CC mips-softmmu/tcg/tcg.o CC mipsel-softmmu/cpu-exec-common.o CC mips64el-softmmu/hw/display/virtio-gpu.o CC mipsel-softmmu/tcg/tcg.o CC mips64-softmmu/cputlb.o CC mips64el-softmmu/hw/display/virtio-gpu-3d.o CC mips-softmmu/tcg/tcg-op.o CC mips64el-softmmu/hw/display/virtio-gpu-pci.o CC mips64-softmmu/memory_mapping.o CC mipsel-softmmu/tcg/tcg-op.o CC mips64el-softmmu/hw/intc/mips_gic.o CC mips64-softmmu/dump.o CC mips64el-softmmu/hw/misc/ivshmem.o CC mips64el-softmmu/hw/misc/mips_cmgcr.o CC mips64-softmmu/migration/ram.o CC mips64el-softmmu/hw/misc/mips_cpc.o CC mips-softmmu/tcg/optimize.o CC mips64el-softmmu/hw/misc/mips_itu.o CC mips64-softmmu/migration/savevm.o CC mips64el-softmmu/hw/misc/edu.o CC mipsel-softmmu/tcg/optimize.o CC mips64-softmmu/xen-common-stub.o CC mips-softmmu/tcg/tcg-common.o CC mips64el-softmmu/hw/net/virtio-net.o CC mips-softmmu/fpu/softfloat.o CC mips64-softmmu/xen-hvm-stub.o CC mips64-softmmu/hw/9pfs/virtio-9p-device.o CC mips64el-softmmu/hw/net/vhost_net.o CC mipsel-softmmu/tcg/tcg-common.o CC mipsel-softmmu/fpu/softfloat.o CC mips64el-softmmu/hw/scsi/virtio-scsi.o CC mips64-softmmu/hw/block/virtio-blk.o CC mips64el-softmmu/hw/scsi/virtio-scsi-dataplane.o CC mips64-softmmu/hw/block/dataplane/virtio-blk.o CC mips64el-softmmu/hw/scsi/vhost-scsi.o CC mips64-softmmu/hw/char/virtio-serial-bus.o CC mips64el-softmmu/hw/timer/mips_gictimer.o CC mips-softmmu/disas.o CC mips64-softmmu/hw/core/nmi.o CC mips64-softmmu/hw/core/generic-loader.o CC mips64el-softmmu/hw/timer/mc146818rtc.o CC mips-softmmu/tcg-runtime.o CC mips64-softmmu/hw/core/null-machine.o CC mips-softmmu/hax-stub.o CC mips64-softmmu/hw/cpu/core.o CC mips64el-softmmu/hw/vfio/common.o CC mipsel-softmmu/disas.o CC mips-softmmu/kvm-stub.o CC mips64-softmmu/hw/display/vga.o CC mipsel-softmmu/tcg-runtime.o CC mips-softmmu/arch_init.o CC mipsel-softmmu/hax-stub.o CC mips64el-softmmu/hw/vfio/pci.o CC mips-softmmu/cpus.o CC mipsel-softmmu/kvm-stub.o CC mips-softmmu/monitor.o CC mipsel-softmmu/arch_init.o CC mips64-softmmu/hw/display/virtio-gpu.o CC mipsel-softmmu/cpus.o CC mips64el-softmmu/hw/vfio/pci-quirks.o CC mips64-softmmu/hw/display/virtio-gpu-3d.o CC mipsel-softmmu/monitor.o CC mips-softmmu/gdbstub.o CC mips64el-softmmu/hw/vfio/platform.o CC mips64-softmmu/hw/display/virtio-gpu-pci.o CC mips64el-softmmu/hw/vfio/spapr.o CC mips64-softmmu/hw/intc/mips_gic.o CC mips-softmmu/balloon.o CC mips64el-softmmu/hw/virtio/virtio.o CC mips-softmmu/ioport.o CC mips64-softmmu/hw/misc/ivshmem.o CC mips-softmmu/numa.o CC mipsel-softmmu/gdbstub.o CC mips64-softmmu/hw/misc/mips_cmgcr.o CC mips-softmmu/qtest.o CC mips64el-softmmu/hw/virtio/virtio-balloon.o CC mips64-softmmu/hw/misc/mips_cpc.o CC mipsel-softmmu/balloon.o CC mips-softmmu/bootdevice.o CC mips64el-softmmu/hw/virtio/vhost.o CC mips64-softmmu/hw/misc/mips_itu.o CC mipsel-softmmu/ioport.o CC mips-softmmu/memory.o CC mips64-softmmu/hw/misc/edu.o CC mipsel-softmmu/numa.o CC mips64el-softmmu/hw/virtio/vhost-backend.o CC mips64-softmmu/hw/net/virtio-net.o CC mips64el-softmmu/hw/virtio/vhost-user.o CC mipsel-softmmu/qtest.o CC mipsel-softmmu/bootdevice.o CC mips64el-softmmu/hw/virtio/vhost-vsock.o CC mips64-softmmu/hw/net/vhost_net.o CC mips-softmmu/cputlb.o CC mips64el-softmmu/hw/virtio/virtio-crypto.o CC mipsel-softmmu/memory.o CC mips64-softmmu/hw/scsi/virtio-scsi.o CC mips64el-softmmu/hw/virtio/virtio-crypto-pci.o CC mips64-softmmu/hw/scsi/virtio-scsi-dataplane.o CC mipsel-softmmu/cputlb.o CC mips-softmmu/memory_mapping.o CC mips64-softmmu/hw/scsi/vhost-scsi.o CC mips64el-softmmu/hw/mips/mips_r4k.o CC mips-softmmu/dump.o CC mips64-softmmu/hw/timer/mips_gictimer.o CC mips64el-softmmu/hw/mips/mips_malta.o CC mips64-softmmu/hw/timer/mc146818rtc.o CC mips-softmmu/migration/ram.o CC mips64el-softmmu/hw/mips/mips_mipssim.o CC mips64el-softmmu/hw/mips/addr.o CC mips64-softmmu/hw/vfio/common.o CC mipsel-softmmu/memory_mapping.o CC mips64el-softmmu/hw/mips/cputimer.o CC mipsel-softmmu/dump.o CC mips64el-softmmu/hw/mips/mips_int.o CC mips-softmmu/migration/savevm.o CC mips64-softmmu/hw/vfio/pci.o CC mips64el-softmmu/hw/mips/mips_jazz.o CC mipsel-softmmu/migration/ram.o CC mips64el-softmmu/hw/mips/mips_fulong2e.o CC mips-softmmu/xen-common-stub.o CC mips64-softmmu/hw/vfio/pci-quirks.o CC mips-softmmu/xen-hvm-stub.o CC mips64el-softmmu/hw/mips/gt64xxx_pci.o CC mips-softmmu/hw/9pfs/virtio-9p-device.o CC mips64-softmmu/hw/vfio/platform.o CC mips64el-softmmu/hw/mips/cps.o CC mipsel-softmmu/migration/savevm.o CC mips-softmmu/hw/block/virtio-blk.o CC mips64el-softmmu/target/mips/translate.o CC mips64-softmmu/hw/vfio/spapr.o CC mips64-softmmu/hw/virtio/virtio.o CC mips-softmmu/hw/block/dataplane/virtio-blk.o CC mipsel-softmmu/xen-common-stub.o CC mips-softmmu/hw/char/virtio-serial-bus.o CC mipsel-softmmu/xen-hvm-stub.o CC mips64-softmmu/hw/virtio/virtio-balloon.o CC mipsel-softmmu/hw/9pfs/virtio-9p-device.o CC mips-softmmu/hw/core/nmi.o CC mips64-softmmu/hw/virtio/vhost.o CC mipsel-softmmu/hw/block/virtio-blk.o CC mips-softmmu/hw/core/generic-loader.o CC mips64-softmmu/hw/virtio/vhost-backend.o CC mips-softmmu/hw/core/null-machine.o CC mipsel-softmmu/hw/block/dataplane/virtio-blk.o CC mips-softmmu/hw/cpu/core.o CC mips64-softmmu/hw/virtio/vhost-user.o CC mips64-softmmu/hw/virtio/vhost-vsock.o CC mipsel-softmmu/hw/char/virtio-serial-bus.o CC mips-softmmu/hw/display/vga.o CC mips64-softmmu/hw/virtio/virtio-crypto.o CC mipsel-softmmu/hw/core/nmi.o CC mips64-softmmu/hw/virtio/virtio-crypto-pci.o CC mipsel-softmmu/hw/core/generic-loader.o CC mips64-softmmu/hw/mips/mips_r4k.o CC mipsel-softmmu/hw/core/null-machine.o CC mips-softmmu/hw/display/virtio-gpu.o CC mipsel-softmmu/hw/cpu/core.o CC mips64-softmmu/hw/mips/mips_malta.o CC mipsel-softmmu/hw/display/vga.o CC mips-softmmu/hw/display/virtio-gpu-3d.o CC mips64-softmmu/hw/mips/mips_mipssim.o CC mips-softmmu/hw/display/virtio-gpu-pci.o CC mipsel-softmmu/hw/display/virtio-gpu.o CC mips64-softmmu/hw/mips/addr.o CC mips64-softmmu/hw/mips/cputimer.o CC mips-softmmu/hw/intc/mips_gic.o CC mips64el-softmmu/target/mips/dsp_helper.o CC mips64-softmmu/hw/mips/mips_int.o CC mips-softmmu/hw/misc/ivshmem.o CC mipsel-softmmu/hw/display/virtio-gpu-3d.o CC mips64-softmmu/hw/mips/mips_jazz.o CC mips-softmmu/hw/misc/mips_cmgcr.o CC mips64-softmmu/hw/mips/gt64xxx_pci.o CC mipsel-softmmu/hw/display/virtio-gpu-pci.o CC mips-softmmu/hw/misc/mips_cpc.o CC mips64-softmmu/hw/mips/cps.o CC mips64-softmmu/target/mips/translate.o CC mipsel-softmmu/hw/intc/mips_gic.o CC mips-softmmu/hw/misc/mips_itu.o CC mips64el-softmmu/target/mips/op_helper.o CC mips-softmmu/hw/misc/edu.o CC mipsel-softmmu/hw/misc/ivshmem.o CC mips-softmmu/hw/net/virtio-net.o CC mipsel-softmmu/hw/misc/mips_cmgcr.o CC mipsel-softmmu/hw/misc/mips_cpc.o CC mipsel-softmmu/hw/misc/mips_itu.o CC mips-softmmu/hw/net/vhost_net.o CC mipsel-softmmu/hw/misc/edu.o CC mipsel-softmmu/hw/net/virtio-net.o CC mips-softmmu/hw/scsi/virtio-scsi.o CC mips64el-softmmu/target/mips/lmi_helper.o CC mips-softmmu/hw/scsi/virtio-scsi-dataplane.o CC mipsel-softmmu/hw/net/vhost_net.o CC mips-softmmu/hw/scsi/vhost-scsi.o CC mips64el-softmmu/target/mips/helper.o CC mipsel-softmmu/hw/scsi/virtio-scsi.o CC mips-softmmu/hw/timer/mips_gictimer.o CC mipsel-softmmu/hw/scsi/virtio-scsi-dataplane.o CC mips64el-softmmu/target/mips/cpu.o CC mips-softmmu/hw/timer/mc146818rtc.o CC mipsel-softmmu/hw/scsi/vhost-scsi.o CC mips-softmmu/hw/vfio/common.o CC mips64el-softmmu/target/mips/gdbstub.o CC mipsel-softmmu/hw/timer/mips_gictimer.o CC mips64el-softmmu/target/mips/msa_helper.o CC mips-softmmu/hw/vfio/pci.o CC mipsel-softmmu/hw/timer/mc146818rtc.o CC mips-softmmu/hw/vfio/pci-quirks.o CC mipsel-softmmu/hw/vfio/common.o CC mips64-softmmu/target/mips/dsp_helper.o CC mips-softmmu/hw/vfio/platform.o CC mipsel-softmmu/hw/vfio/pci.o CC mips-softmmu/hw/vfio/spapr.o CC mips64-softmmu/target/mips/op_helper.o CC mipsel-softmmu/hw/vfio/pci-quirks.o CC mips-softmmu/hw/virtio/virtio.o CC mips-softmmu/hw/virtio/virtio-balloon.o CC mipsel-softmmu/hw/vfio/platform.o CC mips64el-softmmu/target/mips/mips-semi.o CC mips-softmmu/hw/virtio/vhost.o CC mipsel-softmmu/hw/vfio/spapr.o CC mips64el-softmmu/target/mips/machine.o CC mipsel-softmmu/hw/virtio/virtio.o GEN trace/generated-helpers.c CC mips64el-softmmu/trace/control-target.o CC mips-softmmu/hw/virtio/vhost-backend.o CC mips-softmmu/hw/virtio/vhost-user.o CC mips64el-softmmu/trace/generated-helpers.o CC mips64-softmmu/target/mips/lmi_helper.o LINK mips64el-softmmu/qemu-system-mips64el CC mips-softmmu/hw/virtio/vhost-vsock.o CC mipsel-softmmu/hw/virtio/virtio-balloon.o CC mips64-softmmu/target/mips/helper.o CC mips-softmmu/hw/virtio/virtio-crypto.o CC mipsel-softmmu/hw/virtio/vhost.o CC mips64-softmmu/target/mips/cpu.o CC mips-softmmu/hw/virtio/virtio-crypto-pci.o CC mips64-softmmu/target/mips/gdbstub.o CC mips64-softmmu/target/mips/msa_helper.o CC mipsel-softmmu/hw/virtio/vhost-backend.o CC mips-softmmu/hw/mips/mips_r4k.o CC mipsel-softmmu/hw/virtio/vhost-user.o GEN moxie-softmmu/hmp-commands.h GEN moxie-softmmu/hmp-commands-info.h GEN moxie-softmmu/config-target.h CC moxie-softmmu/exec.o CC mips-softmmu/hw/mips/mips_malta.o CC mipsel-softmmu/hw/virtio/vhost-vsock.o CC mips-softmmu/hw/mips/mips_mipssim.o CC mipsel-softmmu/hw/virtio/virtio-crypto.o CC mips-softmmu/hw/mips/addr.o CC mips-softmmu/hw/mips/cputimer.o CC mips-softmmu/hw/mips/mips_int.o CC moxie-softmmu/translate-all.o CC mipsel-softmmu/hw/virtio/virtio-crypto-pci.o CC mips-softmmu/hw/mips/gt64xxx_pci.o CC mipsel-softmmu/hw/mips/mips_r4k.o CC moxie-softmmu/cpu-exec.o CC mips-softmmu/hw/mips/cps.o CC mips-softmmu/target/mips/translate.o CC moxie-softmmu/translate-common.o CC mips64-softmmu/target/mips/mips-semi.o CC mipsel-softmmu/hw/mips/mips_malta.o CC moxie-softmmu/cpu-exec-common.o CC mips64-softmmu/target/mips/machine.o CC moxie-softmmu/tcg/tcg.o CC mipsel-softmmu/hw/mips/mips_mipssim.o GEN trace/generated-helpers.c CC mips64-softmmu/trace/control-target.o CC mips64-softmmu/trace/generated-helpers.o CC mipsel-softmmu/hw/mips/addr.o LINK mips64-softmmu/qemu-system-mips64 CC mipsel-softmmu/hw/mips/cputimer.o CC mipsel-softmmu/hw/mips/mips_int.o CC moxie-softmmu/tcg/tcg-op.o CC mipsel-softmmu/hw/mips/gt64xxx_pci.o CC mipsel-softmmu/hw/mips/cps.o CC mipsel-softmmu/target/mips/translate.o GEN nios2-softmmu/hmp-commands.h CC moxie-softmmu/tcg/optimize.o GEN nios2-softmmu/hmp-commands-info.h GEN nios2-softmmu/config-target.h CC nios2-softmmu/exec.o CC mips-softmmu/target/mips/dsp_helper.o CC moxie-softmmu/tcg/tcg-common.o CC mips-softmmu/target/mips/op_helper.o CC moxie-softmmu/fpu/softfloat.o CC nios2-softmmu/translate-all.o CC nios2-softmmu/cpu-exec.o CC mipsel-softmmu/target/mips/dsp_helper.o CC mips-softmmu/target/mips/lmi_helper.o CC nios2-softmmu/translate-common.o CC mips-softmmu/target/mips/helper.o CC mipsel-softmmu/target/mips/op_helper.o CC moxie-softmmu/disas.o CC nios2-softmmu/cpu-exec-common.o CC moxie-softmmu/tcg-runtime.o CC mips-softmmu/target/mips/cpu.o CC nios2-softmmu/tcg/tcg.o CC moxie-softmmu/hax-stub.o CC mips-softmmu/target/mips/gdbstub.o CC moxie-softmmu/kvm-stub.o CC mips-softmmu/target/mips/msa_helper.o CC moxie-softmmu/arch_init.o CC nios2-softmmu/tcg/tcg-op.o CC moxie-softmmu/cpus.o CC moxie-softmmu/monitor.o CC mipsel-softmmu/target/mips/lmi_helper.o CC mipsel-softmmu/target/mips/helper.o CC moxie-softmmu/gdbstub.o CC nios2-softmmu/tcg/optimize.o CC mipsel-softmmu/target/mips/cpu.o CC moxie-softmmu/balloon.o CC mipsel-softmmu/target/mips/gdbstub.o CC mips-softmmu/target/mips/mips-semi.o CC moxie-softmmu/ioport.o CC mipsel-softmmu/target/mips/msa_helper.o CC mips-softmmu/target/mips/machine.o CC nios2-softmmu/tcg/tcg-common.o CC moxie-softmmu/numa.o CC nios2-softmmu/fpu/softfloat.o GEN trace/generated-helpers.c CC mips-softmmu/trace/control-target.o CC moxie-softmmu/qtest.o CC mips-softmmu/trace/generated-helpers.o LINK mips-softmmu/qemu-system-mips CC moxie-softmmu/bootdevice.o CC moxie-softmmu/memory.o CC mipsel-softmmu/target/mips/mips-semi.o CC nios2-softmmu/disas.o CC nios2-softmmu/tcg-runtime.o CC mipsel-softmmu/target/mips/machine.o GEN trace/generated-helpers.c CC nios2-softmmu/hax-stub.o CC mipsel-softmmu/trace/control-target.o CC moxie-softmmu/cputlb.o CC nios2-softmmu/kvm-stub.o CC nios2-softmmu/arch_init.o CC mipsel-softmmu/trace/generated-helpers.o GEN or1k-softmmu/hmp-commands.h GEN or1k-softmmu/hmp-commands-info.h CC nios2-softmmu/cpus.o GEN or1k-softmmu/config-target.h CC or1k-softmmu/exec.o LINK mipsel-softmmu/qemu-system-mipsel CC moxie-softmmu/memory_mapping.o CC nios2-softmmu/monitor.o CC moxie-softmmu/dump.o CC or1k-softmmu/translate-all.o CC moxie-softmmu/migration/ram.o CC nios2-softmmu/gdbstub.o CC nios2-softmmu/balloon.o CC or1k-softmmu/cpu-exec.o CC nios2-softmmu/ioport.o CC or1k-softmmu/translate-common.o CC moxie-softmmu/migration/savevm.o CC nios2-softmmu/numa.o CC or1k-softmmu/cpu-exec-common.o CC nios2-softmmu/qtest.o CC or1k-softmmu/tcg/tcg.o CC or1k-softmmu/tcg/tcg-op.o CC moxie-softmmu/xen-common-stub.o CC nios2-softmmu/bootdevice.o CC moxie-softmmu/xen-hvm-stub.o CC nios2-softmmu/memory.o CC moxie-softmmu/hw/core/nmi.o CC moxie-softmmu/hw/core/generic-loader.o CC moxie-softmmu/hw/core/null-machine.o CC nios2-softmmu/cputlb.o GEN ppc64-softmmu/hmp-commands.h CC moxie-softmmu/hw/cpu/core.o GEN ppc64-softmmu/hmp-commands-info.h GEN ppc64-softmmu/config-target.h CC ppc64-softmmu/exec.o CC moxie-softmmu/hw/display/vga.o CC or1k-softmmu/tcg/optimize.o CC nios2-softmmu/memory_mapping.o CC moxie-softmmu/hw/net/vhost_net.o CC nios2-softmmu/dump.o CC ppc64-softmmu/translate-all.o CC or1k-softmmu/tcg/tcg-common.o CC moxie-softmmu/hw/net/rocker/qmp-norocker.o CC moxie-softmmu/hw/timer/mc146818rtc.o CC or1k-softmmu/fpu/softfloat.o CC ppc64-softmmu/cpu-exec.o CC nios2-softmmu/migration/ram.o CC ppc64-softmmu/translate-common.o CC moxie-softmmu/hw/vfio/common.o CC ppc64-softmmu/cpu-exec-common.o CC nios2-softmmu/migration/savevm.o CC ppc64-softmmu/tcg/tcg.o CC moxie-softmmu/hw/vfio/platform.o CC moxie-softmmu/hw/vfio/spapr.o CC moxie-softmmu/hw/moxie/moxiesim.o CC nios2-softmmu/xen-common-stub.o CC moxie-softmmu/target/moxie/translate.o CC nios2-softmmu/xen-hvm-stub.o CC moxie-softmmu/target/moxie/helper.o CC or1k-softmmu/disas.o CC nios2-softmmu/hw/core/nmi.o CC moxie-softmmu/target/moxie/machine.o CC or1k-softmmu/tcg-runtime.o CC nios2-softmmu/hw/core/generic-loader.o CC ppc64-softmmu/tcg/tcg-op.o CC moxie-softmmu/target/moxie/cpu.o CC nios2-softmmu/hw/core/null-machine.o CC or1k-softmmu/hax-stub.o CC nios2-softmmu/hw/cpu/core.o CC or1k-softmmu/kvm-stub.o CC moxie-softmmu/target/moxie/mmu.o CC nios2-softmmu/hw/intc/nios2_iic.o GEN trace/generated-helpers.c CC or1k-softmmu/arch_init.o CC moxie-softmmu/trace/control-target.o CC nios2-softmmu/hw/net/vhost_net.o CC or1k-softmmu/cpus.o CC nios2-softmmu/hw/net/rocker/qmp-norocker.o CC moxie-softmmu/trace/generated-helpers.o CC nios2-softmmu/hw/timer/altera_timer.o LINK moxie-softmmu/qemu-system-moxie CC or1k-softmmu/monitor.o CC nios2-softmmu/hw/vfio/common.o CC nios2-softmmu/hw/vfio/platform.o CC or1k-softmmu/gdbstub.o CC ppc64-softmmu/tcg/optimize.o CC nios2-softmmu/hw/vfio/spapr.o CC nios2-softmmu/hw/nios2/boot.o CC nios2-softmmu/hw/nios2/cpu_pic.o CC ppc64-softmmu/tcg/tcg-common.o CC nios2-softmmu/hw/nios2/10m50_devboard.o CC or1k-softmmu/balloon.o CC nios2-softmmu/target/nios2/translate.o CC ppc64-softmmu/fpu/softfloat.o CC or1k-softmmu/ioport.o GEN ppcemb-softmmu/hmp-commands.h GEN ppcemb-softmmu/hmp-commands-info.h GEN ppcemb-softmmu/config-target.h CC ppcemb-softmmu/exec.o CC nios2-softmmu/target/nios2/op_helper.o CC or1k-softmmu/numa.o CC nios2-softmmu/target/nios2/helper.o CC or1k-softmmu/qtest.o CC nios2-softmmu/target/nios2/cpu.o CC or1k-softmmu/bootdevice.o CC nios2-softmmu/target/nios2/mmu.o CC ppcemb-softmmu/translate-all.o CC or1k-softmmu/memory.o CC nios2-softmmu/target/nios2/monitor.o CC ppc64-softmmu/disas.o CC ppcemb-softmmu/cpu-exec.o GEN trace/generated-helpers.c CC nios2-softmmu/trace/control-target.o CC ppc64-softmmu/tcg-runtime.o CC nios2-softmmu/trace/generated-helpers.o CC ppcemb-softmmu/translate-common.o CC ppcemb-softmmu/cpu-exec-common.o CC or1k-softmmu/cputlb.o LINK nios2-softmmu/qemu-system-nios2 CC ppcemb-softmmu/tcg/tcg.o GEN ppc64-softmmu/gdbstub-xml.c CC ppcemb-softmmu/tcg/tcg-op.o CC ppc64-softmmu/hax-stub.o CC or1k-softmmu/memory_mapping.o CC ppc64-softmmu/kvm-stub.o CC or1k-softmmu/dump.o CC ppc64-softmmu/libdecnumber/decContext.o CC or1k-softmmu/migration/ram.o CC ppc64-softmmu/libdecnumber/decNumber.o CC or1k-softmmu/migration/savevm.o GEN ppc-softmmu/hmp-commands.h GEN ppc-softmmu/hmp-commands-info.h GEN ppc-softmmu/config-target.h CC ppc-softmmu/exec.o CC ppcemb-softmmu/tcg/optimize.o CC ppc64-softmmu/libdecnumber/dpd/decimal32.o CC or1k-softmmu/xen-common-stub.o CC ppc64-softmmu/libdecnumber/dpd/decimal64.o CC ppcemb-softmmu/tcg/tcg-common.o CC or1k-softmmu/xen-hvm-stub.o CC ppc64-softmmu/libdecnumber/dpd/decimal128.o CC ppcemb-softmmu/fpu/softfloat.o CC or1k-softmmu/hw/core/nmi.o CC ppc-softmmu/translate-all.o CC ppc64-softmmu/arch_init.o CC or1k-softmmu/hw/core/generic-loader.o CC or1k-softmmu/hw/core/null-machine.o CC ppc-softmmu/cpu-exec.o CC ppc64-softmmu/cpus.o CC or1k-softmmu/hw/cpu/core.o CC or1k-softmmu/hw/net/vhost_net.o CC ppc64-softmmu/monitor.o CC ppc-softmmu/translate-common.o CC ppc-softmmu/cpu-exec-common.o CC or1k-softmmu/hw/net/rocker/qmp-norocker.o CC ppc-softmmu/tcg/tcg.o CC or1k-softmmu/hw/vfio/common.o CC or1k-softmmu/hw/vfio/platform.o CC ppcemb-softmmu/disas.o CC ppc64-softmmu/gdbstub.o CC or1k-softmmu/hw/vfio/spapr.o CC ppcemb-softmmu/tcg-runtime.o CC or1k-softmmu/hw/openrisc/pic_cpu.o GEN ppcemb-softmmu/gdbstub-xml.c CC ppcemb-softmmu/hax-stub.o CC ppcemb-softmmu/kvm-stub.o CC or1k-softmmu/hw/openrisc/cputimer.o CC ppc64-softmmu/balloon.o CC ppcemb-softmmu/libdecnumber/decContext.o CC or1k-softmmu/hw/openrisc/openrisc_sim.o CC ppcemb-softmmu/libdecnumber/decNumber.o CC ppc64-softmmu/ioport.o CC or1k-softmmu/target/openrisc/machine.o CC ppc-softmmu/tcg/tcg-op.o CC ppc64-softmmu/numa.o CC or1k-softmmu/target/openrisc/cpu.o CC ppc64-softmmu/qtest.o CC or1k-softmmu/target/openrisc/exception.o CC ppc64-softmmu/bootdevice.o CC or1k-softmmu/target/openrisc/interrupt.o CC ppcemb-softmmu/libdecnumber/dpd/decimal32.o CC ppc64-softmmu/memory.o CC or1k-softmmu/target/openrisc/mmu.o CC ppcemb-softmmu/libdecnumber/dpd/decimal64.o CC or1k-softmmu/target/openrisc/translate.o CC ppcemb-softmmu/libdecnumber/dpd/decimal128.o CC ppcemb-softmmu/arch_init.o CC ppc-softmmu/tcg/optimize.o CC ppc64-softmmu/cputlb.o CC ppcemb-softmmu/cpus.o CC or1k-softmmu/target/openrisc/exception_helper.o CC ppcemb-softmmu/monitor.o CC or1k-softmmu/target/openrisc/fpu_helper.o CC ppc-softmmu/tcg/tcg-common.o CC ppc64-softmmu/memory_mapping.o CC or1k-softmmu/target/openrisc/interrupt_helper.o CC or1k-softmmu/target/openrisc/mmu_helper.o CC ppc64-softmmu/dump.o CC ppc-softmmu/fpu/softfloat.o CC or1k-softmmu/target/openrisc/sys_helper.o CC ppc64-softmmu/migration/ram.o CC ppcemb-softmmu/gdbstub.o CC or1k-softmmu/target/openrisc/gdbstub.o CC ppcemb-softmmu/balloon.o GEN trace/generated-helpers.c CC ppcemb-softmmu/ioport.o CC or1k-softmmu/trace/control-target.o CC ppc64-softmmu/migration/savevm.o CC or1k-softmmu/trace/generated-helpers.o CC ppcemb-softmmu/numa.o LINK or1k-softmmu/qemu-system-or1k CC ppc64-softmmu/xen-common-stub.o CC ppc-softmmu/disas.o CC ppc64-softmmu/xen-hvm-stub.o CC ppcemb-softmmu/qtest.o CC ppc64-softmmu/hw/9pfs/virtio-9p-device.o CC ppc-softmmu/tcg-runtime.o CC ppcemb-softmmu/bootdevice.o CC ppcemb-softmmu/memory.o CC ppc64-softmmu/hw/block/virtio-blk.o GEN ppc-softmmu/gdbstub-xml.c CC ppc-softmmu/hax-stub.o CC ppc-softmmu/kvm-stub.o CC ppc64-softmmu/hw/block/dataplane/virtio-blk.o CC ppc-softmmu/libdecnumber/decContext.o CC ppc-softmmu/libdecnumber/decNumber.o GEN s390x-softmmu/hmp-commands.h CC ppc64-softmmu/hw/char/spapr_vty.o GEN s390x-softmmu/hmp-commands-info.h CC ppcemb-softmmu/cputlb.o CC s390x-softmmu/gen-features CC ppc64-softmmu/hw/char/virtio-serial-bus.o GEN s390x-softmmu/config-target.h GEN s390x-softmmu/gen-features.h CC ppc64-softmmu/hw/core/nmi.o CC s390x-softmmu/exec.o CC ppc64-softmmu/hw/core/generic-loader.o CC ppcemb-softmmu/memory_mapping.o CC ppc64-softmmu/hw/core/null-machine.o CC ppc-softmmu/libdecnumber/dpd/decimal32.o CC ppcemb-softmmu/dump.o CC ppc64-softmmu/hw/cpu/core.o CC ppc-softmmu/libdecnumber/dpd/decimal64.o CC ppc64-softmmu/hw/display/vga.o CC ppc-softmmu/libdecnumber/dpd/decimal128.o CC ppcemb-softmmu/migration/ram.o CC ppc-softmmu/arch_init.o CC s390x-softmmu/translate-all.o CC ppc-softmmu/cpus.o CC ppc64-softmmu/hw/display/virtio-gpu.o CC s390x-softmmu/cpu-exec.o CC ppcemb-softmmu/migration/savevm.o CC s390x-softmmu/translate-common.o CC ppc-softmmu/monitor.o CC s390x-softmmu/cpu-exec-common.o CC ppc64-softmmu/hw/display/virtio-gpu-3d.o CC s390x-softmmu/tcg/tcg.o CC ppcemb-softmmu/xen-common-stub.o CC ppc64-softmmu/hw/display/virtio-gpu-pci.o CC ppcemb-softmmu/xen-hvm-stub.o CC ppc64-softmmu/hw/display/virtio-vga.o CC ppcemb-softmmu/hw/9pfs/virtio-9p-device.o CC ppc-softmmu/gdbstub.o CC ppcemb-softmmu/hw/block/virtio-blk.o CC ppc64-softmmu/hw/intc/xics.o CC s390x-softmmu/tcg/tcg-op.o CC ppc-softmmu/balloon.o CC ppc-softmmu/ioport.o CC ppc64-softmmu/hw/intc/xics_spapr.o CC ppcemb-softmmu/hw/block/dataplane/virtio-blk.o CC ppc-softmmu/numa.o CC ppc64-softmmu/hw/misc/ivshmem.o CC ppcemb-softmmu/hw/char/virtio-serial-bus.o CC ppc-softmmu/qtest.o CC ppc64-softmmu/hw/misc/edu.o CC ppc-softmmu/bootdevice.o CC ppc64-softmmu/hw/net/spapr_llan.o CC ppcemb-softmmu/hw/core/nmi.o CC ppc-softmmu/memory.o CC ppc64-softmmu/hw/net/xilinx_ethlite.o CC ppcemb-softmmu/hw/core/generic-loader.o CC s390x-softmmu/tcg/optimize.o CC ppc64-softmmu/hw/net/virtio-net.o CC ppcemb-softmmu/hw/core/null-machine.o CC ppc-softmmu/cputlb.o CC ppcemb-softmmu/hw/cpu/core.o CC s390x-softmmu/tcg/tcg-common.o CC ppc64-softmmu/hw/net/vhost_net.o CC ppc64-softmmu/hw/net/fsl_etsec/etsec.o CC s390x-softmmu/fpu/softfloat.o CC ppcemb-softmmu/hw/display/vga.o CC ppc64-softmmu/hw/net/fsl_etsec/registers.o CC ppc64-softmmu/hw/net/fsl_etsec/rings.o CC ppc64-softmmu/hw/net/fsl_etsec/miim.o CC ppc64-softmmu/hw/nvram/spapr_nvram.o CC ppc-softmmu/memory_mapping.o CC ppcemb-softmmu/hw/display/virtio-gpu.o CC ppc64-softmmu/hw/scsi/spapr_vscsi.o CC ppc-softmmu/dump.o CC ppc64-softmmu/hw/scsi/virtio-scsi.o CC ppc-softmmu/migration/ram.o CC ppcemb-softmmu/hw/display/virtio-gpu-3d.o CC ppc64-softmmu/hw/scsi/virtio-scsi-dataplane.o CC s390x-softmmu/disas.o CC ppc-softmmu/migration/savevm.o CC ppc64-softmmu/hw/scsi/vhost-scsi.o CC s390x-softmmu/tcg-runtime.o GEN s390x-softmmu/gdbstub-xml.c CC ppcemb-softmmu/hw/display/virtio-gpu-pci.o CC ppc64-softmmu/hw/timer/mc146818rtc.o CC s390x-softmmu/hax-stub.o CC ppcemb-softmmu/hw/misc/ivshmem.o CC ppc64-softmmu/hw/vfio/common.o CC ppc-softmmu/xen-common-stub.o CC ppc-softmmu/xen-hvm-stub.o CC s390x-softmmu/arch_init.o CC ppcemb-softmmu/hw/misc/edu.o CC ppc-softmmu/hw/9pfs/virtio-9p-device.o CC s390x-softmmu/cpus.o CC ppc64-softmmu/hw/vfio/pci.o CC ppcemb-softmmu/hw/net/xilinx_ethlite.o CC ppc-softmmu/hw/block/virtio-blk.o CC ppcemb-softmmu/hw/net/virtio-net.o CC s390x-softmmu/monitor.o CC ppc-softmmu/hw/block/dataplane/virtio-blk.o CC ppc64-softmmu/hw/vfio/pci-quirks.o CC ppcemb-softmmu/hw/net/vhost_net.o CC ppc-softmmu/hw/char/virtio-serial-bus.o CC ppc64-softmmu/hw/vfio/platform.o CC ppcemb-softmmu/hw/scsi/virtio-scsi.o CC ppc-softmmu/hw/core/nmi.o CC ppc-softmmu/hw/core/generic-loader.o CC ppc64-softmmu/hw/vfio/spapr.o CC ppc-softmmu/hw/core/null-machine.o CC s390x-softmmu/gdbstub.o CC ppcemb-softmmu/hw/scsi/virtio-scsi-dataplane.o CC ppc-softmmu/hw/cpu/core.o CC ppc64-softmmu/hw/virtio/virtio.o CC ppc-softmmu/hw/display/vga.o CC ppcemb-softmmu/hw/scsi/vhost-scsi.o CC s390x-softmmu/balloon.o CC ppcemb-softmmu/hw/vfio/common.o CC s390x-softmmu/ioport.o CC ppc64-softmmu/hw/virtio/virtio-balloon.o CC ppc-softmmu/hw/display/virtio-gpu.o CC ppc64-softmmu/hw/virtio/vhost.o CC ppcemb-softmmu/hw/vfio/pci.o CC s390x-softmmu/numa.o CC ppc-softmmu/hw/display/virtio-gpu-3d.o CC ppc64-softmmu/hw/virtio/vhost-backend.o CC s390x-softmmu/qtest.o CC ppc64-softmmu/hw/virtio/vhost-user.o CC ppcemb-softmmu/hw/vfio/pci-quirks.o CC ppc-softmmu/hw/display/virtio-gpu-pci.o CC ppc64-softmmu/hw/virtio/vhost-vsock.o CC s390x-softmmu/bootdevice.o CC ppc-softmmu/hw/misc/ivshmem.o CC s390x-softmmu/kvm-all.o CC ppcemb-softmmu/hw/vfio/platform.o CC ppc64-softmmu/hw/virtio/virtio-crypto.o CC ppcemb-softmmu/hw/vfio/spapr.o CC ppc-softmmu/hw/misc/edu.o CC s390x-softmmu/memory.o CC ppcemb-softmmu/hw/virtio/virtio.o CC ppc64-softmmu/hw/virtio/virtio-crypto-pci.o CC ppc-softmmu/hw/net/xilinx_ethlite.o CC ppc-softmmu/hw/net/virtio-net.o CC ppc64-softmmu/hw/ppc/ppc.o CC ppcemb-softmmu/hw/virtio/virtio-balloon.o CC s390x-softmmu/cputlb.o CC ppc64-softmmu/hw/ppc/ppc_booke.o CC ppc-softmmu/hw/net/vhost_net.o CC ppcemb-softmmu/hw/virtio/vhost.o CC ppc64-softmmu/hw/ppc/fdt.o CC ppc-softmmu/hw/net/fsl_etsec/etsec.o CC ppc64-softmmu/hw/ppc/spapr.o CC ppc-softmmu/hw/net/fsl_etsec/registers.o CC ppc-softmmu/hw/net/fsl_etsec/rings.o CC ppcemb-softmmu/hw/virtio/vhost-backend.o CC ppc64-softmmu/hw/ppc/spapr_vio.o CC ppc-softmmu/hw/net/fsl_etsec/miim.o CC s390x-softmmu/memory_mapping.o CC ppc-softmmu/hw/scsi/virtio-scsi.o CC s390x-softmmu/dump.o CC ppcemb-softmmu/hw/virtio/vhost-user.o CC ppc64-softmmu/hw/ppc/spapr_events.o CC ppc-softmmu/hw/scsi/virtio-scsi-dataplane.o CC ppcemb-softmmu/hw/virtio/vhost-vsock.o CC ppc-softmmu/hw/scsi/vhost-scsi.o CC ppc64-softmmu/hw/ppc/spapr_hcall.o CC s390x-softmmu/migration/ram.o CC ppcemb-softmmu/hw/virtio/virtio-crypto.o CC ppc-softmmu/hw/timer/mc146818rtc.o CC ppcemb-softmmu/hw/virtio/virtio-crypto-pci.o CC ppc64-softmmu/hw/ppc/spapr_iommu.o CC ppc-softmmu/hw/vfio/common.o CC s390x-softmmu/migration/savevm.o CC ppcemb-softmmu/hw/ppc/ppc.o CC ppc64-softmmu/hw/ppc/spapr_rtas.o CC ppcemb-softmmu/hw/ppc/ppc_booke.o CC ppc-softmmu/hw/vfio/pci.o CC s390x-softmmu/xen-common-stub.o CC ppc64-softmmu/hw/ppc/spapr_pci.o CC ppcemb-softmmu/hw/ppc/fdt.o CC s390x-softmmu/xen-hvm-stub.o CC ppcemb-softmmu/hw/ppc/ppc405_boards.o CC s390x-softmmu/hw/9pfs/virtio-9p-device.o CC ppcemb-softmmu/hw/ppc/ppc4xx_devs.o CC ppc64-softmmu/hw/ppc/spapr_rtc.o CC ppc-softmmu/hw/vfio/pci-quirks.o CC s390x-softmmu/hw/block/virtio-blk.o CC ppcemb-softmmu/hw/ppc/ppc405_uc.o CC ppc64-softmmu/hw/ppc/spapr_drc.o CC s390x-softmmu/hw/block/dataplane/virtio-blk.o CC ppc-softmmu/hw/vfio/platform.o CC ppcemb-softmmu/hw/ppc/ppc440_bamboo.o CC ppc64-softmmu/hw/ppc/spapr_rng.o CC s390x-softmmu/hw/char/virtio-serial-bus.o CC ppcemb-softmmu/hw/ppc/ppc4xx_pci.o CC ppc-softmmu/hw/vfio/spapr.o CC ppc64-softmmu/hw/ppc/spapr_cpu_core.o CC ppcemb-softmmu/hw/ppc/virtex_ml507.o CC ppc64-softmmu/hw/ppc/spapr_ovec.o CC ppc-softmmu/hw/virtio/virtio.o CC s390x-softmmu/hw/core/nmi.o CC ppcemb-softmmu/target/ppc/cpu-models.o CC ppc64-softmmu/hw/ppc/pnv.o CC ppc64-softmmu/hw/ppc/pnv_xscom.o CC s390x-softmmu/hw/core/generic-loader.o CC ppc64-softmmu/hw/ppc/pnv_core.o CC s390x-softmmu/hw/core/null-machine.o CC ppc64-softmmu/hw/ppc/pnv_lpc.o CC ppc-softmmu/hw/virtio/virtio-balloon.o CC s390x-softmmu/hw/cpu/core.o CC ppc64-softmmu/hw/ppc/spapr_pci_vfio.o CC ppcemb-softmmu/target/ppc/translate.o CC s390x-softmmu/hw/display/virtio-gpu.o CC ppc-softmmu/hw/virtio/vhost.o CC ppc64-softmmu/hw/ppc/spapr_rtas_ddw.o CC ppc64-softmmu/hw/ppc/ppc405_boards.o CC ppc64-softmmu/hw/ppc/ppc4xx_devs.o CC ppc-softmmu/hw/virtio/vhost-backend.o CC s390x-softmmu/hw/display/virtio-gpu-3d.o CC ppc-softmmu/hw/virtio/vhost-user.o CC ppc-softmmu/hw/virtio/vhost-vsock.o CC ppc64-softmmu/hw/ppc/ppc405_uc.o CC s390x-softmmu/hw/display/virtio-gpu-pci.o CC ppc-softmmu/hw/virtio/virtio-crypto.o CC s390x-softmmu/hw/intc/s390_flic.o CC ppc64-softmmu/hw/ppc/ppc440_bamboo.o CC ppc-softmmu/hw/virtio/virtio-crypto-pci.o CC s390x-softmmu/hw/intc/s390_flic_kvm.o CC ppc64-softmmu/hw/ppc/ppc4xx_pci.o CC ppc-softmmu/hw/ppc/ppc.o CC s390x-softmmu/hw/net/virtio-net.o CC ppc64-softmmu/hw/ppc/prep.o CC ppc-softmmu/hw/ppc/ppc_booke.o CC ppc-softmmu/hw/ppc/fdt.o CC s390x-softmmu/hw/net/vhost_net.o CC ppc64-softmmu/hw/ppc/prep_systemio.o CC ppc-softmmu/hw/ppc/ppc405_boards.o CC s390x-softmmu/hw/net/rocker/qmp-norocker.o CC ppc64-softmmu/hw/ppc/rs6000_mc.o CC s390x-softmmu/hw/scsi/virtio-scsi.o CC ppc-softmmu/hw/ppc/ppc4xx_devs.o CC ppc-softmmu/hw/ppc/ppc405_uc.o CC s390x-softmmu/hw/scsi/virtio-scsi-dataplane.o CC ppc64-softmmu/hw/ppc/mac_oldworld.o CC s390x-softmmu/hw/scsi/vhost-scsi.o CC ppc-softmmu/hw/ppc/ppc440_bamboo.o CC ppc64-softmmu/hw/ppc/mac_newworld.o CC s390x-softmmu/hw/vfio/common.o CC ppc-softmmu/hw/ppc/ppc4xx_pci.o CC ppc64-softmmu/hw/ppc/e500.o CC ppc-softmmu/hw/ppc/prep.o CC ppc64-softmmu/hw/ppc/mpc8544ds.o CC s390x-softmmu/hw/vfio/pci.o CC ppc-softmmu/hw/ppc/prep_systemio.o CC ppc64-softmmu/hw/ppc/e500plat.o CC ppc-softmmu/hw/ppc/rs6000_mc.o CC ppc64-softmmu/hw/ppc/mpc8544_guts.o CC ppc-softmmu/hw/ppc/mac_oldworld.o CC ppc64-softmmu/hw/ppc/ppce500_spin.o CC s390x-softmmu/hw/vfio/pci-quirks.o CC ppc64-softmmu/hw/ppc/virtex_ml507.o CC ppc-softmmu/hw/ppc/mac_newworld.o CC ppc64-softmmu/target/ppc/cpu-models.o CC ppc-softmmu/hw/ppc/e500.o CC s390x-softmmu/hw/vfio/platform.o CC ppc-softmmu/hw/ppc/mpc8544ds.o CC ppc-softmmu/hw/ppc/e500plat.o CC ppc-softmmu/hw/ppc/mpc8544_guts.o CC s390x-softmmu/hw/vfio/spapr.o CC ppc-softmmu/hw/ppc/ppce500_spin.o CC ppc64-softmmu/target/ppc/translate.o CC s390x-softmmu/hw/virtio/virtio.o CC ppc-softmmu/hw/ppc/virtex_ml507.o CC ppc-softmmu/target/ppc/cpu-models.o CC s390x-softmmu/hw/virtio/virtio-balloon.o CC s390x-softmmu/hw/virtio/vhost.o CC ppc-softmmu/target/ppc/translate.o CC s390x-softmmu/hw/virtio/vhost-backend.o CC s390x-softmmu/hw/virtio/vhost-user.o CC s390x-softmmu/hw/virtio/vhost-vsock.o CC ppcemb-softmmu/target/ppc/machine.o CC s390x-softmmu/hw/virtio/virtio-crypto.o CC ppcemb-softmmu/target/ppc/mmu_helper.o CC s390x-softmmu/hw/virtio/virtio-crypto-pci.o CC ppcemb-softmmu/target/ppc/mmu-hash32.o CC ppcemb-softmmu/target/ppc/monitor.o CC s390x-softmmu/hw/s390x/s390-virtio.o CC ppcemb-softmmu/target/ppc/kvm-stub.o CC ppcemb-softmmu/target/ppc/dfp_helper.o CC s390x-softmmu/hw/s390x/s390-virtio-hcall.o CC ppcemb-softmmu/target/ppc/excp_helper.o CC s390x-softmmu/hw/s390x/sclp.o CC s390x-softmmu/hw/s390x/event-facility.o CC ppcemb-softmmu/target/ppc/fpu_helper.o CC s390x-softmmu/hw/s390x/sclpquiesce.o CC s390x-softmmu/hw/s390x/sclpcpu.o CC s390x-softmmu/hw/s390x/ipl.o CC s390x-softmmu/hw/s390x/css.o CC s390x-softmmu/hw/s390x/s390-virtio-ccw.o CC ppcemb-softmmu/target/ppc/int_helper.o CC s390x-softmmu/hw/s390x/virtio-ccw.o CC ppc64-softmmu/target/ppc/machine.o CC ppc64-softmmu/target/ppc/mmu_helper.o CC s390x-softmmu/hw/s390x/css-bridge.o CC s390x-softmmu/hw/s390x/ccw-device.o CC ppcemb-softmmu/target/ppc/timebase_helper.o CC s390x-softmmu/hw/s390x/s390-pci-bus.o CC ppc64-softmmu/target/ppc/mmu-hash32.o CC ppcemb-softmmu/target/ppc/misc_helper.o CC ppcemb-softmmu/target/ppc/mem_helper.o CC ppc64-softmmu/target/ppc/monitor.o CC s390x-softmmu/hw/s390x/s390-pci-inst.o CC ppcemb-softmmu/target/ppc/gdbstub.o CC ppc64-softmmu/target/ppc/mmu-hash64.o CC s390x-softmmu/hw/s390x/s390-skeys.o CC ppc-softmmu/target/ppc/machine.o GEN trace/generated-helpers.c CC ppcemb-softmmu/trace/control-target.o CC s390x-softmmu/hw/s390x/s390-skeys-kvm.o CC ppcemb-softmmu/gdbstub-xml.o CC ppc-softmmu/target/ppc/mmu_helper.o CC ppc64-softmmu/target/ppc/arch_dump.o CC ppcemb-softmmu/trace/generated-helpers.o LINK ppcemb-softmmu/qemu-system-ppcemb CC s390x-softmmu/target/s390x/translate.o CC ppc64-softmmu/target/ppc/compat.o CC ppc64-softmmu/target/ppc/kvm-stub.o CC ppc-softmmu/target/ppc/mmu-hash32.o CC ppc-softmmu/target/ppc/monitor.o CC ppc64-softmmu/target/ppc/dfp_helper.o CC ppc-softmmu/target/ppc/kvm-stub.o CC ppc-softmmu/target/ppc/dfp_helper.o CC ppc64-softmmu/target/ppc/excp_helper.o CC ppc-softmmu/target/ppc/excp_helper.o GEN sh4eb-softmmu/hmp-commands.h GEN sh4eb-softmmu/hmp-commands-info.h GEN sh4eb-softmmu/config-target.h CC s390x-softmmu/target/s390x/helper.o CC ppc64-softmmu/target/ppc/fpu_helper.o CC sh4eb-softmmu/exec.o CC s390x-softmmu/target/s390x/cpu.o CC ppc-softmmu/target/ppc/fpu_helper.o CC s390x-softmmu/target/s390x/interrupt.o CC s390x-softmmu/target/s390x/int_helper.o CC s390x-softmmu/target/s390x/fpu_helper.o CC sh4eb-softmmu/translate-all.o CC s390x-softmmu/target/s390x/cc_helper.o CC sh4eb-softmmu/cpu-exec.o CC s390x-softmmu/target/s390x/mem_helper.o CC sh4eb-softmmu/translate-common.o CC ppc64-softmmu/target/ppc/int_helper.o CC sh4eb-softmmu/cpu-exec-common.o CC ppc-softmmu/target/ppc/int_helper.o CC s390x-softmmu/target/s390x/misc_helper.o CC sh4eb-softmmu/tcg/tcg.o CC s390x-softmmu/target/s390x/gdbstub.o CC s390x-softmmu/target/s390x/cpu_models.o CC s390x-softmmu/target/s390x/cpu_features.o CC s390x-softmmu/target/s390x/machine.o CC ppc64-softmmu/target/ppc/timebase_helper.o CC ppc-softmmu/target/ppc/timebase_helper.o CC s390x-softmmu/target/s390x/ioinst.o CC ppc64-softmmu/target/ppc/misc_helper.o CC ppc-softmmu/target/ppc/misc_helper.o CC sh4eb-softmmu/tcg/tcg-op.o CC ppc64-softmmu/target/ppc/mem_helper.o CC s390x-softmmu/target/s390x/arch_dump.o CC ppc-softmmu/target/ppc/mem_helper.o CC s390x-softmmu/target/s390x/mmu_helper.o CC ppc64-softmmu/target/ppc/gdbstub.o CC ppc-softmmu/target/ppc/gdbstub.o CC s390x-softmmu/target/s390x/kvm.o GEN trace/generated-helpers.c CC ppc64-softmmu/trace/control-target.o GEN trace/generated-helpers.c CC ppc-softmmu/trace/control-target.o CC ppc64-softmmu/gdbstub-xml.o CC ppc64-softmmu/trace/generated-helpers.o CC ppc-softmmu/gdbstub-xml.o GEN trace/generated-helpers.c CC s390x-softmmu/trace/control-target.o LINK ppc64-softmmu/qemu-system-ppc64 CC ppc-softmmu/trace/generated-helpers.o CC sh4eb-softmmu/tcg/optimize.o CC s390x-softmmu/gdbstub-xml.o LINK ppc-softmmu/qemu-system-ppc CC s390x-softmmu/trace/generated-helpers.o LINK s390x-softmmu/qemu-system-s390x CC sh4eb-softmmu/tcg/tcg-common.o CC sh4eb-softmmu/fpu/softfloat.o CC sh4eb-softmmu/disas.o CC sh4eb-softmmu/tcg-runtime.o GEN sh4-softmmu/hmp-commands.h GEN sh4-softmmu/hmp-commands-info.h GEN sh4-softmmu/config-target.h CC sh4eb-softmmu/hax-stub.o CC sh4-softmmu/exec.o CC sh4eb-softmmu/kvm-stub.o CC sh4eb-softmmu/arch_init.o GEN sparc64-softmmu/hmp-commands.h GEN sparc64-softmmu/hmp-commands-info.h GEN sparc64-softmmu/config-target.h CC sparc64-softmmu/exec.o CC sh4eb-softmmu/cpus.o GEN sparc-softmmu/hmp-commands.h CC sh4-softmmu/translate-all.o GEN sparc-softmmu/hmp-commands-info.h GEN sparc-softmmu/config-target.h CC sparc-softmmu/exec.o CC sh4eb-softmmu/monitor.o CC sh4-softmmu/cpu-exec.o CC sparc64-softmmu/translate-all.o CC sh4-softmmu/translate-common.o CC sparc64-softmmu/cpu-exec.o CC sh4eb-softmmu/gdbstub.o CC sh4-softmmu/cpu-exec-common.o CC sparc-softmmu/translate-all.o CC sparc64-softmmu/translate-common.o CC sh4eb-softmmu/balloon.o CC sh4-softmmu/tcg/tcg.o CC sparc-softmmu/cpu-exec.o CC sparc64-softmmu/cpu-exec-common.o CC sh4eb-softmmu/ioport.o CC sparc64-softmmu/tcg/tcg.o CC sh4eb-softmmu/numa.o CC sparc-softmmu/translate-common.o CC sparc-softmmu/cpu-exec-common.o CC sh4eb-softmmu/qtest.o CC sh4eb-softmmu/bootdevice.o CC sparc-softmmu/tcg/tcg.o CC sh4-softmmu/tcg/tcg-op.o CC sh4eb-softmmu/memory.o CC sparc64-softmmu/tcg/tcg-op.o CC sh4eb-softmmu/cputlb.o CC sparc-softmmu/tcg/tcg-op.o CC sh4-softmmu/tcg/optimize.o CC sh4eb-softmmu/memory_mapping.o CC sh4-softmmu/tcg/tcg-common.o CC sparc64-softmmu/tcg/optimize.o CC sh4eb-softmmu/dump.o CC sh4-softmmu/fpu/softfloat.o CC sparc-softmmu/tcg/optimize.o CC sparc64-softmmu/tcg/tcg-common.o CC sh4eb-softmmu/migration/ram.o CC sparc64-softmmu/fpu/softfloat.o CC sparc-softmmu/tcg/tcg-common.o CC sh4eb-softmmu/migration/savevm.o CC sparc-softmmu/fpu/softfloat.o CC sh4eb-softmmu/xen-common-stub.o CC sh4-softmmu/disas.o CC sparc64-softmmu/disas.o CC sh4eb-softmmu/xen-hvm-stub.o CC sh4-softmmu/tcg-runtime.o CC sparc64-softmmu/tcg-runtime.o CC sh4eb-softmmu/hw/9pfs/virtio-9p-device.o CC sh4-softmmu/hax-stub.o CC sparc64-softmmu/hax-stub.o CC sh4-softmmu/kvm-stub.o CC sh4eb-softmmu/hw/block/tc58128.o CC sparc64-softmmu/kvm-stub.o CC sh4-softmmu/arch_init.o CC sparc-softmmu/disas.o CC sh4eb-softmmu/hw/block/virtio-blk.o CC sparc64-softmmu/arch_init.o CC sh4-softmmu/cpus.o CC sparc-softmmu/tcg-runtime.o CC sparc64-softmmu/cpus.o CC sh4eb-softmmu/hw/block/dataplane/virtio-blk.o CC sparc-softmmu/hax-stub.o CC sh4-softmmu/monitor.o CC sparc-softmmu/kvm-stub.o CC sh4eb-softmmu/hw/char/sh_serial.o CC sparc-softmmu/arch_init.o CC sparc64-softmmu/monitor.o CC sh4eb-softmmu/hw/char/virtio-serial-bus.o CC sparc-softmmu/cpus.o CC sh4eb-softmmu/hw/core/nmi.o CC sparc-softmmu/monitor.o CC sh4-softmmu/gdbstub.o CC sh4eb-softmmu/hw/core/generic-loader.o CC sparc64-softmmu/gdbstub.o CC sh4-softmmu/balloon.o CC sh4eb-softmmu/hw/core/null-machine.o CC sh4eb-softmmu/hw/cpu/core.o CC sh4eb-softmmu/hw/display/sm501.o CC sh4-softmmu/ioport.o CC sparc64-softmmu/balloon.o CC sparc64-softmmu/ioport.o CC sh4-softmmu/numa.o CC sparc-softmmu/gdbstub.o CC sparc64-softmmu/numa.o CC sh4-softmmu/qtest.o CC sh4eb-softmmu/hw/display/vga.o CC sparc64-softmmu/qtest.o CC sparc-softmmu/balloon.o CC sh4-softmmu/bootdevice.o CC sparc64-softmmu/bootdevice.o CC sparc-softmmu/ioport.o CC sh4-softmmu/memory.o CC sparc64-softmmu/memory.o CC sparc-softmmu/numa.o CC sh4eb-softmmu/hw/display/virtio-gpu.o CC sparc-softmmu/qtest.o CC sparc-softmmu/bootdevice.o CC sh4eb-softmmu/hw/display/virtio-gpu-3d.o CC sparc-softmmu/memory.o CC sh4-softmmu/cputlb.o CC sh4eb-softmmu/hw/display/virtio-gpu-pci.o CC sparc64-softmmu/cputlb.o CC sh4eb-softmmu/hw/intc/sh_intc.o CC sparc-softmmu/cputlb.o CC sh4eb-softmmu/hw/misc/ivshmem.o CC sh4-softmmu/memory_mapping.o CC sh4-softmmu/dump.o CC sh4eb-softmmu/hw/misc/edu.o CC sparc64-softmmu/memory_mapping.o CC sh4-softmmu/migration/ram.o CC sparc64-softmmu/dump.o CC sh4eb-softmmu/hw/net/virtio-net.o CC sparc-softmmu/memory_mapping.o CC sparc-softmmu/dump.o CC sh4eb-softmmu/hw/net/vhost_net.o CC sparc64-softmmu/migration/ram.o CC sh4-softmmu/migration/savevm.o CC sh4eb-softmmu/hw/scsi/virtio-scsi.o CC sparc-softmmu/migration/ram.o CC sparc64-softmmu/migration/savevm.o CC sh4eb-softmmu/hw/scsi/virtio-scsi-dataplane.o CC sh4-softmmu/xen-common-stub.o CC sh4-softmmu/xen-hvm-stub.o CC sh4eb-softmmu/hw/scsi/vhost-scsi.o CC sparc-softmmu/migration/savevm.o CC sparc64-softmmu/xen-common-stub.o CC sh4-softmmu/hw/9pfs/virtio-9p-device.o CC sparc64-softmmu/xen-hvm-stub.o CC sh4eb-softmmu/hw/timer/sh_timer.o CC sh4-softmmu/hw/block/tc58128.o CC sparc64-softmmu/hw/9pfs/virtio-9p-device.o CC sh4-softmmu/hw/block/virtio-blk.o CC sh4eb-softmmu/hw/timer/mc146818rtc.o CC sparc64-softmmu/hw/block/virtio-blk.o CC sparc-softmmu/xen-common-stub.o CC sh4eb-softmmu/hw/vfio/common.o CC sparc-softmmu/xen-hvm-stub.o CC sh4-softmmu/hw/block/dataplane/virtio-blk.o CC sparc64-softmmu/hw/block/dataplane/virtio-blk.o CC sparc-softmmu/hw/core/nmi.o CC sparc-softmmu/hw/core/generic-loader.o CC sh4-softmmu/hw/char/sh_serial.o CC sparc64-softmmu/hw/char/virtio-serial-bus.o CC sh4eb-softmmu/hw/vfio/pci.o CC sparc-softmmu/hw/core/null-machine.o CC sh4-softmmu/hw/char/virtio-serial-bus.o CC sparc-softmmu/hw/cpu/core.o CC sparc-softmmu/hw/display/tcx.o CC sparc64-softmmu/hw/core/nmi.o CC sh4-softmmu/hw/core/nmi.o CC sparc64-softmmu/hw/core/generic-loader.o CC sh4eb-softmmu/hw/vfio/pci-quirks.o CC sh4-softmmu/hw/core/generic-loader.o CC sparc-softmmu/hw/display/cg3.o CC sparc64-softmmu/hw/core/null-machine.o CC sh4-softmmu/hw/core/null-machine.o CC sparc64-softmmu/hw/cpu/core.o CC sparc-softmmu/hw/intc/grlib_irqmp.o CC sh4-softmmu/hw/cpu/core.o CC sh4-softmmu/hw/display/sm501.o CC sh4eb-softmmu/hw/vfio/platform.o CC sparc-softmmu/hw/misc/eccmemctl.o CC sparc64-softmmu/hw/display/vga.o CC sparc-softmmu/hw/misc/slavio_misc.o CC sh4eb-softmmu/hw/vfio/spapr.o CC sparc-softmmu/hw/net/vhost_net.o CC sh4-softmmu/hw/display/vga.o CC sh4eb-softmmu/hw/virtio/virtio.o CC sparc-softmmu/hw/net/rocker/qmp-norocker.o CC sparc64-softmmu/hw/display/virtio-gpu.o CC sparc-softmmu/hw/vfio/common.o CC sh4eb-softmmu/hw/virtio/virtio-balloon.o CC sh4-softmmu/hw/display/virtio-gpu.o CC sparc-softmmu/hw/vfio/platform.o CC sh4eb-softmmu/hw/virtio/vhost.o CC sparc64-softmmu/hw/display/virtio-gpu-3d.o CC sparc-softmmu/hw/vfio/spapr.o CC sh4-softmmu/hw/display/virtio-gpu-3d.o CC sh4eb-softmmu/hw/virtio/vhost-backend.o CC sparc-softmmu/hw/sparc/sun4m.o CC sparc64-softmmu/hw/display/virtio-gpu-pci.o CC sh4eb-softmmu/hw/virtio/vhost-user.o CC sh4-softmmu/hw/display/virtio-gpu-pci.o CC sparc-softmmu/hw/sparc/leon3.o CC sparc64-softmmu/hw/misc/ivshmem.o CC sh4eb-softmmu/hw/virtio/vhost-vsock.o CC sh4-softmmu/hw/intc/sh_intc.o CC sh4eb-softmmu/hw/virtio/virtio-crypto.o CC sparc-softmmu/target/sparc/machine.o CC sparc64-softmmu/hw/misc/edu.o CC sh4eb-softmmu/hw/virtio/virtio-crypto-pci.o CC sh4-softmmu/hw/misc/ivshmem.o CC sparc64-softmmu/hw/net/virtio-net.o CC sparc-softmmu/target/sparc/monitor.o CC sparc-softmmu/target/sparc/translate.o CC sh4-softmmu/hw/misc/edu.o CC sh4eb-softmmu/hw/sh4/shix.o CC sh4-softmmu/hw/net/virtio-net.o CC sh4eb-softmmu/hw/sh4/r2d.o CC sparc64-softmmu/hw/net/vhost_net.o CC sh4eb-softmmu/hw/sh4/sh7750.o CC sh4eb-softmmu/hw/sh4/sh7750_regnames.o CC sh4-softmmu/hw/net/vhost_net.o CC sparc-softmmu/target/sparc/helper.o CC sparc64-softmmu/hw/scsi/virtio-scsi.o CC sh4eb-softmmu/hw/sh4/sh_pci.o CC sh4-softmmu/hw/scsi/virtio-scsi.o CC sparc-softmmu/target/sparc/cpu.o CC sh4eb-softmmu/target/sh4/translate.o CC sparc-softmmu/target/sparc/fop_helper.o CC sh4-softmmu/hw/scsi/virtio-scsi-dataplane.o CC sparc64-softmmu/hw/scsi/virtio-scsi-dataplane.o CC sparc-softmmu/target/sparc/cc_helper.o CC sparc64-softmmu/hw/scsi/vhost-scsi.o CC sh4-softmmu/hw/scsi/vhost-scsi.o CC sparc-softmmu/target/sparc/win_helper.o CC sparc64-softmmu/hw/timer/mc146818rtc.o CC sh4-softmmu/hw/timer/sh_timer.o CC sparc-softmmu/target/sparc/mmu_helper.o CC sparc-softmmu/target/sparc/ldst_helper.o CC sparc64-softmmu/hw/vfio/common.o CC sh4-softmmu/hw/timer/mc146818rtc.o CC sparc-softmmu/target/sparc/int32_helper.o CC sh4-softmmu/hw/vfio/common.o CC sh4eb-softmmu/target/sh4/op_helper.o CC sparc-softmmu/target/sparc/gdbstub.o CC sparc64-softmmu/hw/vfio/pci.o CC sh4eb-softmmu/target/sh4/helper.o GEN trace/generated-helpers.c CC sh4-softmmu/hw/vfio/pci.o CC sparc-softmmu/trace/control-target.o CC sh4eb-softmmu/target/sh4/cpu.o CC sparc-softmmu/trace/generated-helpers.o CC sh4eb-softmmu/target/sh4/monitor.o CC sparc64-softmmu/hw/vfio/pci-quirks.o LINK sparc-softmmu/qemu-system-sparc CC sh4eb-softmmu/target/sh4/gdbstub.o CC sh4-softmmu/hw/vfio/pci-quirks.o CC sparc64-softmmu/hw/vfio/platform.o CC sparc64-softmmu/hw/vfio/spapr.o GEN trace/generated-helpers.c CC sh4-softmmu/hw/vfio/platform.o CC sh4eb-softmmu/trace/control-target.o CC sparc64-softmmu/hw/virtio/virtio.o CC sh4-softmmu/hw/vfio/spapr.o CC sh4eb-softmmu/trace/generated-helpers.o GEN tricore-softmmu/hmp-commands.h GEN tricore-softmmu/hmp-commands-info.h GEN tricore-softmmu/config-target.h CC tricore-softmmu/exec.o CC sh4-softmmu/hw/virtio/virtio.o LINK sh4eb-softmmu/qemu-system-sh4eb CC sparc64-softmmu/hw/virtio/virtio-balloon.o CC sh4-softmmu/hw/virtio/virtio-balloon.o CC sparc64-softmmu/hw/virtio/vhost.o CC sh4-softmmu/hw/virtio/vhost.o CC tricore-softmmu/translate-all.o CC sparc64-softmmu/hw/virtio/vhost-backend.o GEN unicore32-softmmu/hmp-commands.h GEN unicore32-softmmu/hmp-commands-info.h GEN unicore32-softmmu/config-target.h CC unicore32-softmmu/exec.o CC sh4-softmmu/hw/virtio/vhost-backend.o CC tricore-softmmu/cpu-exec.o CC sparc64-softmmu/hw/virtio/vhost-user.o CC sh4-softmmu/hw/virtio/vhost-user.o CC sparc64-softmmu/hw/virtio/vhost-vsock.o CC sh4-softmmu/hw/virtio/vhost-vsock.o CC tricore-softmmu/translate-common.o CC sparc64-softmmu/hw/virtio/virtio-crypto.o CC sh4-softmmu/hw/virtio/virtio-crypto.o CC tricore-softmmu/cpu-exec-common.o CC sparc64-softmmu/hw/virtio/virtio-crypto-pci.o CC tricore-softmmu/tcg/tcg.o CC sh4-softmmu/hw/virtio/virtio-crypto-pci.o CC sparc64-softmmu/hw/sparc64/sparc64.o CC sh4-softmmu/hw/sh4/shix.o CC unicore32-softmmu/translate-all.o CC sparc64-softmmu/hw/sparc64/sun4u.o CC sh4-softmmu/hw/sh4/r2d.o CC unicore32-softmmu/cpu-exec.o CC sparc64-softmmu/hw/sparc64/niagara.o CC sparc64-softmmu/target/sparc/machine.o CC unicore32-softmmu/translate-common.o CC sh4-softmmu/hw/sh4/sh7750.o CC unicore32-softmmu/cpu-exec-common.o CC tricore-softmmu/tcg/tcg-op.o CC sparc64-softmmu/target/sparc/monitor.o CC sparc64-softmmu/target/sparc/translate.o CC sh4-softmmu/hw/sh4/sh7750_regnames.o CC unicore32-softmmu/tcg/tcg.o CC sh4-softmmu/hw/sh4/sh_pci.o CC sh4-softmmu/target/sh4/translate.o CC unicore32-softmmu/tcg/tcg-op.o CC tricore-softmmu/tcg/optimize.o CC sparc64-softmmu/target/sparc/helper.o CC sparc64-softmmu/target/sparc/cpu.o CC sparc64-softmmu/target/sparc/fop_helper.o CC tricore-softmmu/tcg/tcg-common.o CC sh4-softmmu/target/sh4/op_helper.o CC tricore-softmmu/fpu/softfloat.o CC sparc64-softmmu/target/sparc/cc_helper.o CC unicore32-softmmu/tcg/optimize.o CC sh4-softmmu/target/sh4/helper.o CC sparc64-softmmu/target/sparc/win_helper.o CC sh4-softmmu/target/sh4/cpu.o CC sh4-softmmu/target/sh4/monitor.o CC sh4-softmmu/target/sh4/gdbstub.o CC sparc64-softmmu/target/sparc/mmu_helper.o CC unicore32-softmmu/tcg/tcg-common.o GEN trace/generated-helpers.c CC unicore32-softmmu/fpu/softfloat.o CC sh4-softmmu/trace/control-target.o CC sparc64-softmmu/target/sparc/ldst_helper.o CC sh4-softmmu/trace/generated-helpers.o CC sparc64-softmmu/target/sparc/int64_helper.o LINK sh4-softmmu/qemu-system-sh4 CC sparc64-softmmu/target/sparc/vis_helper.o CC tricore-softmmu/disas.o CC tricore-softmmu/tcg-runtime.o CC sparc64-softmmu/target/sparc/gdbstub.o CC tricore-softmmu/hax-stub.o GEN trace/generated-helpers.c CC sparc64-softmmu/trace/control-target.o CC tricore-softmmu/kvm-stub.o CC tricore-softmmu/arch_init.o CC sparc64-softmmu/trace/generated-helpers.o CC unicore32-softmmu/disas.o CC tricore-softmmu/cpus.o LINK sparc64-softmmu/qemu-system-sparc64 CC unicore32-softmmu/tcg-runtime.o GEN x86_64-softmmu/hmp-commands.h GEN x86_64-softmmu/hmp-commands-info.h GEN x86_64-softmmu/config-target.h CC tricore-softmmu/monitor.o CC unicore32-softmmu/hax-stub.o CC x86_64-softmmu/exec.o CC unicore32-softmmu/kvm-stub.o CC tricore-softmmu/gdbstub.o CC unicore32-softmmu/arch_init.o CC tricore-softmmu/balloon.o CC unicore32-softmmu/cpus.o CC tricore-softmmu/ioport.o CC x86_64-softmmu/translate-all.o GEN xtensaeb-softmmu/hmp-commands.h GEN xtensaeb-softmmu/hmp-commands-info.h CC tricore-softmmu/numa.o GEN xtensaeb-softmmu/config-target.h CC unicore32-softmmu/monitor.o CC xtensaeb-softmmu/exec.o CC x86_64-softmmu/cpu-exec.o CC tricore-softmmu/qtest.o CC x86_64-softmmu/translate-common.o CC tricore-softmmu/bootdevice.o CC x86_64-softmmu/cpu-exec-common.o CC unicore32-softmmu/gdbstub.o CC x86_64-softmmu/tcg/tcg.o CC tricore-softmmu/memory.o CC xtensaeb-softmmu/translate-all.o CC unicore32-softmmu/balloon.o CC xtensaeb-softmmu/cpu-exec.o CC unicore32-softmmu/ioport.o CC tricore-softmmu/cputlb.o CC xtensaeb-softmmu/translate-common.o CC unicore32-softmmu/numa.o CC x86_64-softmmu/tcg/tcg-op.o CC xtensaeb-softmmu/cpu-exec-common.o CC unicore32-softmmu/qtest.o CC xtensaeb-softmmu/tcg/tcg.o CC unicore32-softmmu/bootdevice.o CC tricore-softmmu/memory_mapping.o CC unicore32-softmmu/memory.o CC tricore-softmmu/dump.o CC xtensaeb-softmmu/tcg/tcg-op.o CC unicore32-softmmu/cputlb.o CC tricore-softmmu/migration/ram.o CC x86_64-softmmu/tcg/optimize.o CC tricore-softmmu/migration/savevm.o CC x86_64-softmmu/tcg/tcg-common.o CC unicore32-softmmu/memory_mapping.o CC unicore32-softmmu/dump.o CC x86_64-softmmu/fpu/softfloat.o CC xtensaeb-softmmu/tcg/optimize.o CC tricore-softmmu/xen-common-stub.o CC unicore32-softmmu/migration/ram.o CC tricore-softmmu/xen-hvm-stub.o CC tricore-softmmu/hw/core/nmi.o CC xtensaeb-softmmu/tcg/tcg-common.o CC tricore-softmmu/hw/core/generic-loader.o CC xtensaeb-softmmu/fpu/softfloat.o CC unicore32-softmmu/migration/savevm.o CC tricore-softmmu/hw/core/null-machine.o CC tricore-softmmu/hw/cpu/core.o CC unicore32-softmmu/xen-common-stub.o CC x86_64-softmmu/disas.o CC tricore-softmmu/hw/net/vhost_net.o CC unicore32-softmmu/xen-hvm-stub.o CC tricore-softmmu/hw/net/rocker/qmp-norocker.o CC x86_64-softmmu/tcg-runtime.o CC unicore32-softmmu/hw/core/nmi.o CC tricore-softmmu/hw/vfio/common.o CC unicore32-softmmu/hw/core/generic-loader.o CC x86_64-softmmu/hax-stub.o CC x86_64-softmmu/kvm-stub.o CC tricore-softmmu/hw/vfio/platform.o CC xtensaeb-softmmu/disas.o CC unicore32-softmmu/hw/core/null-machine.o CC unicore32-softmmu/hw/cpu/core.o CC x86_64-softmmu/arch_init.o CC xtensaeb-softmmu/tcg-runtime.o CC tricore-softmmu/hw/vfio/spapr.o CC unicore32-softmmu/hw/net/vhost_net.o CC xtensaeb-softmmu/hax-stub.o CC x86_64-softmmu/cpus.o CC unicore32-softmmu/hw/net/rocker/qmp-norocker.o CC tricore-softmmu/hw/tricore/tricore_testboard.o CC xtensaeb-softmmu/kvm-stub.o CC unicore32-softmmu/hw/vfio/common.o CC tricore-softmmu/target/tricore/translate.o CC xtensaeb-softmmu/arch_init.o CC x86_64-softmmu/monitor.o CC xtensaeb-softmmu/cpus.o CC unicore32-softmmu/hw/vfio/platform.o CC xtensaeb-softmmu/monitor.o CC unicore32-softmmu/hw/vfio/spapr.o CC x86_64-softmmu/gdbstub.o CC unicore32-softmmu/hw/unicore32/puv3.o CC x86_64-softmmu/balloon.o CC xtensaeb-softmmu/gdbstub.o CC unicore32-softmmu/target/unicore32/translate.o CC x86_64-softmmu/ioport.o CC x86_64-softmmu/numa.o CC xtensaeb-softmmu/balloon.o CC unicore32-softmmu/target/unicore32/op_helper.o CC x86_64-softmmu/qtest.o CC xtensaeb-softmmu/ioport.o CC unicore32-softmmu/target/unicore32/helper.o CC xtensaeb-softmmu/numa.o CC x86_64-softmmu/bootdevice.o CC tricore-softmmu/target/tricore/helper.o CC x86_64-softmmu/memory.o CC unicore32-softmmu/target/unicore32/cpu.o CC xtensaeb-softmmu/qtest.o CC tricore-softmmu/target/tricore/cpu.o CC tricore-softmmu/target/tricore/op_helper.o CC unicore32-softmmu/target/unicore32/ucf64_helper.o CC xtensaeb-softmmu/bootdevice.o CC unicore32-softmmu/target/unicore32/softmmu.o CC x86_64-softmmu/cputlb.o CC xtensaeb-softmmu/memory.o CC tricore-softmmu/target/tricore/fpu_helper.o GEN trace/generated-helpers.c CC unicore32-softmmu/trace/control-target.o GEN trace/generated-helpers.c CC unicore32-softmmu/trace/generated-helpers.o CC tricore-softmmu/trace/control-target.o LINK unicore32-softmmu/qemu-system-unicore32 CC tricore-softmmu/trace/generated-helpers.o CC xtensaeb-softmmu/cputlb.o CC x86_64-softmmu/memory_mapping.o LINK tricore-softmmu/qemu-system-tricore CC x86_64-softmmu/dump.o CC x86_64-softmmu/migration/ram.o CC x86_64-softmmu/migration/savevm.o CC xtensaeb-softmmu/memory_mapping.o CC xtensaeb-softmmu/dump.o CC xtensaeb-softmmu/migration/ram.o CC x86_64-softmmu/xen-common-stub.o CC x86_64-softmmu/xen-hvm-stub.o GEN xtensa-softmmu/hmp-commands.h CC x86_64-softmmu/hw/9pfs/virtio-9p-device.o GEN xtensa-softmmu/hmp-commands-info.h GEN xtensa-softmmu/config-target.h GEN aarch64-linux-user/config-target.h CC aarch64-linux-user/exec.o CC xtensa-softmmu/exec.o CC x86_64-softmmu/hw/block/virtio-blk.o CC aarch64-linux-user/translate-all.o CC xtensaeb-softmmu/migration/savevm.o CC aarch64-linux-user/cpu-exec.o CC x86_64-softmmu/hw/block/dataplane/virtio-blk.o CC x86_64-softmmu/hw/char/virtio-serial-bus.o CC aarch64-linux-user/translate-common.o CC xtensaeb-softmmu/xen-common-stub.o CC x86_64-softmmu/hw/core/nmi.o CC aarch64-linux-user/cpu-exec-common.o CC xtensaeb-softmmu/xen-hvm-stub.o CC xtensaeb-softmmu/hw/core/nmi.o CC xtensa-softmmu/translate-all.o CC x86_64-softmmu/hw/core/generic-loader.o CC aarch64-linux-user/tcg/tcg.o CC xtensaeb-softmmu/hw/core/generic-loader.o CC x86_64-softmmu/hw/core/null-machine.o CC xtensaeb-softmmu/hw/core/null-machine.o CC xtensa-softmmu/cpu-exec.o CC x86_64-softmmu/hw/cpu/core.o CC xtensaeb-softmmu/hw/cpu/core.o CC xtensa-softmmu/translate-common.o CC x86_64-softmmu/hw/display/vga.o CC xtensaeb-softmmu/hw/net/vhost_net.o CC xtensa-softmmu/cpu-exec-common.o CC xtensaeb-softmmu/hw/net/rocker/qmp-norocker.o CC xtensa-softmmu/tcg/tcg.o CC xtensaeb-softmmu/hw/vfio/common.o CC aarch64-linux-user/tcg/tcg-op.o CC x86_64-softmmu/hw/display/virtio-gpu.o CC xtensaeb-softmmu/hw/vfio/platform.o CC x86_64-softmmu/hw/display/virtio-gpu-3d.o CC xtensaeb-softmmu/hw/vfio/spapr.o CC xtensa-softmmu/tcg/tcg-op.o CC xtensaeb-softmmu/hw/xtensa/pic_cpu.o CC x86_64-softmmu/hw/display/virtio-gpu-pci.o CC xtensaeb-softmmu/hw/xtensa/sim.o CC x86_64-softmmu/hw/display/virtio-vga.o CC xtensaeb-softmmu/hw/xtensa/xtfpga.o CC aarch64-linux-user/tcg/optimize.o CC xtensaeb-softmmu/target/xtensa/xtensa-semi.o CC x86_64-softmmu/hw/intc/apic.o CC xtensaeb-softmmu/target/xtensa/core-dc232b.o CC x86_64-softmmu/hw/intc/apic_common.o CC xtensa-softmmu/tcg/optimize.o CC xtensaeb-softmmu/target/xtensa/core-dc233c.o CC x86_64-softmmu/hw/intc/ioapic.o CC xtensaeb-softmmu/target/xtensa/core-fsf.o CC aarch64-linux-user/tcg/tcg-common.o CC x86_64-softmmu/hw/isa/lpc_ich9.o CC aarch64-linux-user/fpu/softfloat.o CC xtensaeb-softmmu/target/xtensa/monitor.o CC x86_64-softmmu/hw/misc/vmport.o CC xtensa-softmmu/tcg/tcg-common.o CC xtensaeb-softmmu/target/xtensa/translate.o CC xtensa-softmmu/fpu/softfloat.o CC x86_64-softmmu/hw/misc/ivshmem.o CC x86_64-softmmu/hw/misc/pvpanic.o CC x86_64-softmmu/hw/misc/edu.o CC xtensaeb-softmmu/target/xtensa/op_helper.o CC x86_64-softmmu/hw/net/virtio-net.o CC aarch64-linux-user/disas.o CC xtensa-softmmu/disas.o CC xtensaeb-softmmu/target/xtensa/helper.o CC xtensa-softmmu/tcg-runtime.o CC aarch64-linux-user/tcg-runtime.o CC xtensaeb-softmmu/target/xtensa/cpu.o CC xtensa-softmmu/hax-stub.o CC xtensaeb-softmmu/target/xtensa/gdbstub.o CC x86_64-softmmu/hw/net/vhost_net.o CC xtensa-softmmu/kvm-stub.o GEN trace/generated-helpers.c CC xtensa-softmmu/arch_init.o CC xtensaeb-softmmu/trace/control-target.o GEN aarch64-linux-user/gdbstub-xml.c CC x86_64-softmmu/hw/scsi/virtio-scsi.o CC xtensa-softmmu/cpus.o CC xtensaeb-softmmu/trace/generated-helpers.o CC aarch64-linux-user/hax-stub.o LINK xtensaeb-softmmu/qemu-system-xtensaeb CC x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o CC aarch64-linux-user/kvm-stub.o CC xtensa-softmmu/monitor.o CC x86_64-softmmu/hw/scsi/vhost-scsi.o CC aarch64-linux-user/gdbstub.o CC x86_64-softmmu/hw/timer/mc146818rtc.o CC xtensa-softmmu/gdbstub.o CC x86_64-softmmu/hw/vfio/common.o CC aarch64-linux-user/thunk.o CC xtensa-softmmu/balloon.o CC x86_64-softmmu/hw/vfio/pci.o CC aarch64-linux-user/user-exec.o CC xtensa-softmmu/ioport.o CC aarch64-linux-user/user-exec-stub.o CC xtensa-softmmu/numa.o GEN alpha-linux-user/config-target.h CC alpha-linux-user/exec.o CC aarch64-linux-user/linux-user/main.o CC xtensa-softmmu/qtest.o CC x86_64-softmmu/hw/vfio/pci-quirks.o CC alpha-linux-user/translate-all.o CC aarch64-linux-user/linux-user/syscall.o CC xtensa-softmmu/bootdevice.o CC alpha-linux-user/cpu-exec.o CC xtensa-softmmu/memory.o CC x86_64-softmmu/hw/vfio/platform.o CC alpha-linux-user/translate-common.o CC alpha-linux-user/cpu-exec-common.o CC x86_64-softmmu/hw/vfio/spapr.o CC alpha-linux-user/tcg/tcg.o CC x86_64-softmmu/hw/virtio/virtio.o CC xtensa-softmmu/cputlb.o CC x86_64-softmmu/hw/virtio/virtio-balloon.o CC aarch64-linux-user/linux-user/strace.o CC xtensa-softmmu/memory_mapping.o CC alpha-linux-user/tcg/tcg-op.o CC x86_64-softmmu/hw/virtio/vhost.o CC aarch64-linux-user/linux-user/mmap.o CC xtensa-softmmu/dump.o CC aarch64-linux-user/linux-user/signal.o CC x86_64-softmmu/hw/virtio/vhost-backend.o CC xtensa-softmmu/migration/ram.o CC aarch64-linux-user/linux-user/elfload.o CC x86_64-softmmu/hw/virtio/vhost-user.o CC xtensa-softmmu/migration/savevm.o CC aarch64-linux-user/linux-user/linuxload.o CC x86_64-softmmu/hw/virtio/vhost-vsock.o CC alpha-linux-user/tcg/optimize.o CC aarch64-linux-user/linux-user/uaccess.o CC x86_64-softmmu/hw/virtio/virtio-crypto.o CC aarch64-linux-user/linux-user/uname.o CC xtensa-softmmu/xen-common-stub.o CC x86_64-softmmu/hw/virtio/virtio-crypto-pci.o CC xtensa-softmmu/xen-hvm-stub.o CCAS aarch64-linux-user/linux-user/safe-syscall.o CC xtensa-softmmu/hw/core/nmi.o CC alpha-linux-user/tcg/tcg-common.o CC aarch64-linux-user/linux-user/flatload.o CC x86_64-softmmu/hw/i386/multiboot.o CC xtensa-softmmu/hw/core/generic-loader.o CC alpha-linux-user/fpu/softfloat.o CC x86_64-softmmu/hw/i386/pc.o CC aarch64-linux-user/target/arm/arm-semi.o CC xtensa-softmmu/hw/core/null-machine.o CC xtensa-softmmu/hw/cpu/core.o CC aarch64-linux-user/target/arm/kvm-stub.o CC xtensa-softmmu/hw/net/vhost_net.o CC x86_64-softmmu/hw/i386/pc_piix.o CC xtensa-softmmu/hw/net/rocker/qmp-norocker.o CC aarch64-linux-user/target/arm/translate.o CC xtensa-softmmu/hw/vfio/common.o CC x86_64-softmmu/hw/i386/pc_q35.o CC xtensa-softmmu/hw/vfio/platform.o CC x86_64-softmmu/hw/i386/pc_sysfw.o CC x86_64-softmmu/hw/i386/x86-iommu.o CC alpha-linux-user/disas.o CC xtensa-softmmu/hw/vfio/spapr.o CC x86_64-softmmu/hw/i386/intel_iommu.o CC xtensa-softmmu/hw/xtensa/pic_cpu.o CC alpha-linux-user/tcg-runtime.o CC alpha-linux-user/hax-stub.o CC xtensa-softmmu/hw/xtensa/sim.o CC x86_64-softmmu/hw/i386/amd_iommu.o CC alpha-linux-user/kvm-stub.o CC xtensa-softmmu/hw/xtensa/xtfpga.o CC x86_64-softmmu/hw/i386/kvmvapic.o CC alpha-linux-user/gdbstub.o CC xtensa-softmmu/target/xtensa/xtensa-semi.o CC x86_64-softmmu/hw/i386/acpi-build.o CC xtensa-softmmu/target/xtensa/core-dc232b.o CC alpha-linux-user/thunk.o CC xtensa-softmmu/target/xtensa/core-dc233c.o CC xtensa-softmmu/target/xtensa/core-fsf.o CC x86_64-softmmu/hw/i386/pci-assign-load-rom.o CC xtensa-softmmu/target/xtensa/monitor.o CC xtensa-softmmu/target/xtensa/translate.o CC alpha-linux-user/user-exec.o CC x86_64-softmmu/target/i386/translate.o CC alpha-linux-user/user-exec-stub.o CC aarch64-linux-user/target/arm/op_helper.o CC alpha-linux-user/linux-user/main.o CC aarch64-linux-user/target/arm/helper.o CC alpha-linux-user/linux-user/syscall.o CC xtensa-softmmu/target/xtensa/op_helper.o CC xtensa-softmmu/target/xtensa/helper.o CC xtensa-softmmu/target/xtensa/cpu.o CC xtensa-softmmu/target/xtensa/gdbstub.o CC aarch64-linux-user/target/arm/cpu.o GEN trace/generated-helpers.c CC xtensa-softmmu/trace/control-target.o CC aarch64-linux-user/target/arm/neon_helper.o CC xtensa-softmmu/trace/generated-helpers.o LINK xtensa-softmmu/qemu-system-xtensa CC alpha-linux-user/linux-user/strace.o CC aarch64-linux-user/target/arm/iwmmxt_helper.o CC x86_64-softmmu/target/i386/helper.o CC aarch64-linux-user/target/arm/gdbstub.o CC alpha-linux-user/linux-user/mmap.o CC x86_64-softmmu/target/i386/cpu.o CC aarch64-linux-user/target/arm/cpu64.o CC alpha-linux-user/linux-user/signal.o CC aarch64-linux-user/target/arm/translate-a64.o GEN armeb-linux-user/config-target.h CC x86_64-softmmu/target/i386/bpt_helper.o CC alpha-linux-user/linux-user/elfload.o CC armeb-linux-user/exec.o CC x86_64-softmmu/target/i386/excp_helper.o CC x86_64-softmmu/target/i386/fpu_helper.o CC alpha-linux-user/linux-user/linuxload.o CC armeb-linux-user/translate-all.o CC alpha-linux-user/linux-user/uaccess.o CC alpha-linux-user/linux-user/uname.o CC armeb-linux-user/cpu-exec.o CCAS alpha-linux-user/linux-user/safe-syscall.o CC alpha-linux-user/target/alpha/translate.o CC armeb-linux-user/translate-common.o CC armeb-linux-user/cpu-exec-common.o CC alpha-linux-user/target/alpha/helper.o CC x86_64-softmmu/target/i386/cc_helper.o CC armeb-linux-user/tcg/tcg.o CC aarch64-linux-user/target/arm/helper-a64.o CC alpha-linux-user/target/alpha/cpu.o CC x86_64-softmmu/target/i386/int_helper.o CC alpha-linux-user/target/alpha/int_helper.o CC aarch64-linux-user/target/arm/gdbstub64.o CC alpha-linux-user/target/alpha/fpu_helper.o CC aarch64-linux-user/target/arm/crypto_helper.o CC x86_64-softmmu/target/i386/svm_helper.o CC alpha-linux-user/target/alpha/vax_helper.o GEN trace/generated-helpers.c CC aarch64-linux-user/trace/control-target.o CC x86_64-softmmu/target/i386/smm_helper.o CC alpha-linux-user/target/alpha/sys_helper.o CC aarch64-linux-user/gdbstub-xml.o CC armeb-linux-user/tcg/tcg-op.o CC alpha-linux-user/target/alpha/mem_helper.o CC x86_64-softmmu/target/i386/misc_helper.o CC aarch64-linux-user/trace/generated-helpers.o CC alpha-linux-user/target/alpha/gdbstub.o LINK aarch64-linux-user/qemu-aarch64 GEN trace/generated-helpers.c CC alpha-linux-user/trace/control-target.o CC x86_64-softmmu/target/i386/mem_helper.o CC alpha-linux-user/trace/generated-helpers.o CC armeb-linux-user/tcg/optimize.o LINK alpha-linux-user/qemu-alpha CC x86_64-softmmu/target/i386/seg_helper.o CC armeb-linux-user/tcg/tcg-common.o CC x86_64-softmmu/target/i386/mpx_helper.o GEN arm-linux-user/config-target.h CC arm-linux-user/exec.o CC armeb-linux-user/fpu/softfloat.o CC arm-linux-user/translate-all.o CC arm-linux-user/cpu-exec.o CC armeb-linux-user/disas.o CC arm-linux-user/translate-common.o CC arm-linux-user/cpu-exec-common.o CC armeb-linux-user/tcg-runtime.o CC x86_64-softmmu/target/i386/gdbstub.o CC arm-linux-user/tcg/tcg.o CC x86_64-softmmu/target/i386/machine.o CC arm-linux-user/tcg/tcg-op.o CC x86_64-softmmu/target/i386/arch_memory_mapping.o GEN armeb-linux-user/gdbstub-xml.c CC x86_64-softmmu/target/i386/arch_dump.o CC armeb-linux-user/hax-stub.o CC x86_64-softmmu/target/i386/monitor.o CC armeb-linux-user/kvm-stub.o CC armeb-linux-user/gdbstub.o CC x86_64-softmmu/target/i386/kvm-stub.o GEN trace/generated-helpers.c GEN cris-linux-user/config-target.h CC cris-linux-user/exec.o CC x86_64-softmmu/trace/control-target.o CC armeb-linux-user/thunk.o CC arm-linux-user/tcg/optimize.o CC x86_64-softmmu/trace/generated-helpers.o CC armeb-linux-user/user-exec.o CC cris-linux-user/translate-all.o LINK x86_64-softmmu/qemu-system-x86_64 CC armeb-linux-user/user-exec-stub.o CC cris-linux-user/cpu-exec.o CC armeb-linux-user/linux-user/main.o CC arm-linux-user/tcg/tcg-common.o CC cris-linux-user/translate-common.o CC arm-linux-user/fpu/softfloat.o CC armeb-linux-user/linux-user/syscall.o CC cris-linux-user/cpu-exec-common.o CC arm-linux-user/disas.o CC cris-linux-user/tcg/tcg.o CC armeb-linux-user/linux-user/strace.o CC cris-linux-user/tcg/tcg-op.o CC arm-linux-user/tcg-runtime.o GEN hppa-linux-user/config-target.h CC hppa-linux-user/exec.o GEN arm-linux-user/gdbstub-xml.c CC hppa-linux-user/translate-all.o CC arm-linux-user/hax-stub.o CC arm-linux-user/kvm-stub.o CC armeb-linux-user/linux-user/mmap.o CC hppa-linux-user/cpu-exec.o CC arm-linux-user/gdbstub.o CC hppa-linux-user/translate-common.o CC cris-linux-user/tcg/optimize.o CC armeb-linux-user/linux-user/signal.o CC hppa-linux-user/cpu-exec-common.o CC hppa-linux-user/tcg/tcg.o CC arm-linux-user/thunk.o CC armeb-linux-user/linux-user/elfload.o CC cris-linux-user/tcg/tcg-common.o CC arm-linux-user/user-exec.o CC arm-linux-user/user-exec-stub.o CC cris-linux-user/fpu/softfloat.o CC arm-linux-user/linux-user/main.o CC armeb-linux-user/linux-user/linuxload.o CC arm-linux-user/linux-user/syscall.o CC armeb-linux-user/linux-user/uaccess.o CC hppa-linux-user/tcg/tcg-op.o CC armeb-linux-user/linux-user/uname.o CCAS armeb-linux-user/linux-user/safe-syscall.o CC armeb-linux-user/linux-user/flatload.o CC cris-linux-user/disas.o CC armeb-linux-user/linux-user/arm/nwfpe/fpa11.o CC hppa-linux-user/tcg/optimize.o CC cris-linux-user/tcg-runtime.o CC armeb-linux-user/linux-user/arm/nwfpe/fpa11_cpdo.o CC hppa-linux-user/tcg/tcg-common.o CC armeb-linux-user/linux-user/arm/nwfpe/fpa11_cpdt.o CC cris-linux-user/hax-stub.o CC hppa-linux-user/fpu/softfloat.o CC arm-linux-user/linux-user/strace.o CC armeb-linux-user/linux-user/arm/nwfpe/fpa11_cprt.o CC cris-linux-user/kvm-stub.o CC armeb-linux-user/linux-user/arm/nwfpe/fpopcode.o CC cris-linux-user/gdbstub.o CC armeb-linux-user/linux-user/arm/nwfpe/single_cpdo.o CC arm-linux-user/linux-user/mmap.o CC armeb-linux-user/linux-user/arm/nwfpe/double_cpdo.o CC armeb-linux-user/linux-user/arm/nwfpe/extended_cpdo.o CC cris-linux-user/thunk.o CC armeb-linux-user/target/arm/arm-semi.o CC arm-linux-user/linux-user/signal.o CC cris-linux-user/user-exec.o CC armeb-linux-user/target/arm/kvm-stub.o CC cris-linux-user/user-exec-stub.o CC cris-linux-user/linux-user/main.o CC armeb-linux-user/target/arm/translate.o CC arm-linux-user/linux-user/elfload.o CC cris-linux-user/linux-user/syscall.o CC hppa-linux-user/disas.o CC arm-linux-user/linux-user/linuxload.o CC hppa-linux-user/tcg-runtime.o CC hppa-linux-user/hax-stub.o CC arm-linux-user/linux-user/uaccess.o CC hppa-linux-user/kvm-stub.o CC arm-linux-user/linux-user/uname.o CC hppa-linux-user/gdbstub.o CCAS arm-linux-user/linux-user/safe-syscall.o CC arm-linux-user/linux-user/flatload.o CC arm-linux-user/linux-user/arm/nwfpe/fpa11.o CC hppa-linux-user/thunk.o CC arm-linux-user/linux-user/arm/nwfpe/fpa11_cpdo.o CC hppa-linux-user/user-exec.o CC arm-linux-user/linux-user/arm/nwfpe/fpa11_cpdt.o CC hppa-linux-user/user-exec-stub.o CC hppa-linux-user/linux-user/main.o CC cris-linux-user/linux-user/strace.o CC arm-linux-user/linux-user/arm/nwfpe/fpa11_cprt.o CC hppa-linux-user/linux-user/syscall.o CC armeb-linux-user/target/arm/op_helper.o CC arm-linux-user/linux-user/arm/nwfpe/fpopcode.o CC cris-linux-user/linux-user/mmap.o CC cris-linux-user/linux-user/signal.o CC arm-linux-user/linux-user/arm/nwfpe/single_cpdo.o CC armeb-linux-user/target/arm/helper.o CC arm-linux-user/linux-user/arm/nwfpe/double_cpdo.o CC cris-linux-user/linux-user/elfload.o CC arm-linux-user/linux-user/arm/nwfpe/extended_cpdo.o CC cris-linux-user/linux-user/linuxload.o CC arm-linux-user/target/arm/arm-semi.o CC cris-linux-user/linux-user/uaccess.o CC armeb-linux-user/target/arm/cpu.o CC arm-linux-user/target/arm/kvm-stub.o CC cris-linux-user/linux-user/uname.o CC arm-linux-user/target/arm/translate.o CC hppa-linux-user/linux-user/strace.o CC armeb-linux-user/target/arm/neon_helper.o CCAS cris-linux-user/linux-user/safe-syscall.o CC cris-linux-user/target/cris/translate.o CC hppa-linux-user/linux-user/mmap.o CC armeb-linux-user/target/arm/iwmmxt_helper.o CC hppa-linux-user/linux-user/signal.o CC cris-linux-user/target/cris/op_helper.o CC armeb-linux-user/target/arm/gdbstub.o CC hppa-linux-user/linux-user/elfload.o CC armeb-linux-user/target/arm/crypto_helper.o CC cris-linux-user/target/cris/helper.o CC hppa-linux-user/linux-user/linuxload.o GEN trace/generated-helpers.c CC armeb-linux-user/trace/control-target.o CC cris-linux-user/target/cris/cpu.o CC hppa-linux-user/linux-user/uaccess.o CC cris-linux-user/target/cris/gdbstub.o CC hppa-linux-user/linux-user/uname.o GEN trace/generated-helpers.c CC cris-linux-user/trace/control-target.o CCAS hppa-linux-user/linux-user/safe-syscall.o CC armeb-linux-user/gdbstub-xml.o CC hppa-linux-user/target/hppa/translate.o CC cris-linux-user/trace/generated-helpers.o LINK cris-linux-user/qemu-cris CC armeb-linux-user/trace/generated-helpers.o CC arm-linux-user/target/arm/op_helper.o LINK armeb-linux-user/qemu-armeb CC arm-linux-user/target/arm/helper.o GEN i386-linux-user/config-target.h CC i386-linux-user/exec.o CC hppa-linux-user/target/hppa/helper.o GEN m68k-linux-user/config-target.h CC hppa-linux-user/target/hppa/cpu.o CC m68k-linux-user/exec.o CC i386-linux-user/translate-all.o CC hppa-linux-user/target/hppa/op_helper.o CC i386-linux-user/cpu-exec.o CC m68k-linux-user/translate-all.o CC hppa-linux-user/target/hppa/gdbstub.o CC i386-linux-user/translate-common.o GEN trace/generated-helpers.c CC hppa-linux-user/trace/control-target.o CC i386-linux-user/cpu-exec-common.o CC m68k-linux-user/cpu-exec.o CC hppa-linux-user/trace/generated-helpers.o CC i386-linux-user/tcg/tcg.o CC arm-linux-user/target/arm/cpu.o CC m68k-linux-user/translate-common.o LINK hppa-linux-user/qemu-hppa CC m68k-linux-user/cpu-exec-common.o CC m68k-linux-user/tcg/tcg.o CC arm-linux-user/target/arm/neon_helper.o CC i386-linux-user/tcg/tcg-op.o CC m68k-linux-user/tcg/tcg-op.o CC arm-linux-user/target/arm/iwmmxt_helper.o CC i386-linux-user/tcg/optimize.o CC arm-linux-user/target/arm/gdbstub.o CC arm-linux-user/target/arm/crypto_helper.o GEN trace/generated-helpers.c CC arm-linux-user/trace/control-target.o GEN microblazeel-linux-user/config-target.h CC microblazeel-linux-user/exec.o CC i386-linux-user/tcg/tcg-common.o CC arm-linux-user/gdbstub-xml.o CC microblazeel-linux-user/translate-all.o CC arm-linux-user/trace/generated-helpers.o CC i386-linux-user/fpu/softfloat.o CC m68k-linux-user/tcg/optimize.o LINK arm-linux-user/qemu-arm CC microblazeel-linux-user/cpu-exec.o CC m68k-linux-user/tcg/tcg-common.o CC microblazeel-linux-user/translate-common.o CC m68k-linux-user/fpu/softfloat.o GEN microblaze-linux-user/config-target.h CC microblaze-linux-user/exec.o CC microblazeel-linux-user/cpu-exec-common.o CC microblaze-linux-user/translate-all.o CC microblazeel-linux-user/tcg/tcg.o CC microblaze-linux-user/cpu-exec.o CC microblaze-linux-user/translate-common.o CC i386-linux-user/disas.o CC i386-linux-user/tcg-runtime.o CC microblaze-linux-user/cpu-exec-common.o CC microblaze-linux-user/tcg/tcg.o CC i386-linux-user/hax-stub.o CC microblazeel-linux-user/tcg/tcg-op.o CC m68k-linux-user/disas.o CC i386-linux-user/kvm-stub.o CC m68k-linux-user/tcg-runtime.o CC i386-linux-user/gdbstub.o GEN m68k-linux-user/gdbstub-xml.c CC m68k-linux-user/hax-stub.o CC microblaze-linux-user/tcg/tcg-op.o CC i386-linux-user/thunk.o CC m68k-linux-user/kvm-stub.o CC i386-linux-user/user-exec.o CC i386-linux-user/user-exec-stub.o CC m68k-linux-user/gdbstub.o CC i386-linux-user/linux-user/main.o CC microblazeel-linux-user/tcg/optimize.o CC m68k-linux-user/thunk.o CC i386-linux-user/linux-user/syscall.o CC microblazeel-linux-user/tcg/tcg-common.o CC m68k-linux-user/user-exec.o CC microblaze-linux-user/tcg/optimize.o CC microblazeel-linux-user/fpu/softfloat.o CC m68k-linux-user/user-exec-stub.o CC m68k-linux-user/linux-user/main.o CC microblaze-linux-user/tcg/tcg-common.o CC m68k-linux-user/linux-user/syscall.o CC microblaze-linux-user/fpu/softfloat.o CC microblazeel-linux-user/disas.o CC i386-linux-user/linux-user/strace.o CC microblazeel-linux-user/tcg-runtime.o CC i386-linux-user/linux-user/mmap.o CC microblaze-linux-user/disas.o CC microblazeel-linux-user/hax-stub.o CC microblaze-linux-user/tcg-runtime.o CC i386-linux-user/linux-user/signal.o CC microblazeel-linux-user/kvm-stub.o CC m68k-linux-user/linux-user/strace.o CC microblazeel-linux-user/gdbstub.o CC microblaze-linux-user/hax-stub.o CC i386-linux-user/linux-user/elfload.o CC microblazeel-linux-user/thunk.o CC microblaze-linux-user/kvm-stub.o CC m68k-linux-user/linux-user/mmap.o CC microblaze-linux-user/gdbstub.o CC microblazeel-linux-user/user-exec.o CC i386-linux-user/linux-user/linuxload.o CC m68k-linux-user/linux-user/signal.o CC microblazeel-linux-user/user-exec-stub.o CC i386-linux-user/linux-user/uaccess.o CC microblaze-linux-user/thunk.o CC m68k-linux-user/linux-user/elfload.o CC microblazeel-linux-user/linux-user/main.o CC i386-linux-user/linux-user/uname.o CC microblaze-linux-user/user-exec.o CCAS i386-linux-user/linux-user/safe-syscall.o CC microblazeel-linux-user/linux-user/syscall.o CC i386-linux-user/linux-user/vm86.o CC microblaze-linux-user/user-exec-stub.o CC m68k-linux-user/linux-user/linuxload.o CC microblaze-linux-user/linux-user/main.o CC m68k-linux-user/linux-user/uaccess.o CC i386-linux-user/target/i386/translate.o CC microblaze-linux-user/linux-user/syscall.o CC m68k-linux-user/linux-user/uname.o CCAS m68k-linux-user/linux-user/safe-syscall.o CC m68k-linux-user/linux-user/flatload.o CC m68k-linux-user/linux-user/m68k-sim.o CC microblazeel-linux-user/linux-user/strace.o CC m68k-linux-user/target/m68k/m68k-semi.o CC microblaze-linux-user/linux-user/strace.o CC m68k-linux-user/target/m68k/translate.o CC microblazeel-linux-user/linux-user/mmap.o CC microblaze-linux-user/linux-user/mmap.o CC microblazeel-linux-user/linux-user/signal.o CC i386-linux-user/target/i386/helper.o CC microblaze-linux-user/linux-user/signal.o CC microblazeel-linux-user/linux-user/elfload.o CC i386-linux-user/target/i386/cpu.o CC microblaze-linux-user/linux-user/elfload.o CC i386-linux-user/target/i386/bpt_helper.o CC m68k-linux-user/target/m68k/op_helper.o CC microblazeel-linux-user/linux-user/linuxload.o CC microblaze-linux-user/linux-user/linuxload.o CC i386-linux-user/target/i386/excp_helper.o CC m68k-linux-user/target/m68k/helper.o CC microblaze-linux-user/linux-user/uaccess.o CC microblazeel-linux-user/linux-user/uaccess.o CC i386-linux-user/target/i386/fpu_helper.o CC m68k-linux-user/target/m68k/cpu.o CC microblaze-linux-user/linux-user/uname.o CC microblazeel-linux-user/linux-user/uname.o CC m68k-linux-user/target/m68k/gdbstub.o CCAS microblaze-linux-user/linux-user/safe-syscall.o GEN trace/generated-helpers.c CC microblaze-linux-user/linux-user/flatload.o CCAS microblazeel-linux-user/linux-user/safe-syscall.o CC m68k-linux-user/trace/control-target.o CC microblazeel-linux-user/linux-user/flatload.o CC m68k-linux-user/gdbstub-xml.o CC microblazeel-linux-user/target/microblaze/translate.o CC m68k-linux-user/trace/generated-helpers.o CC microblaze-linux-user/target/microblaze/translate.o LINK m68k-linux-user/qemu-m68k CC microblaze-linux-user/target/microblaze/op_helper.o CC microblazeel-linux-user/target/microblaze/op_helper.o CC microblazeel-linux-user/target/microblaze/helper.o CC i386-linux-user/target/i386/cc_helper.o CC microblaze-linux-user/target/microblaze/helper.o CC microblazeel-linux-user/target/microblaze/cpu.o CC microblaze-linux-user/target/microblaze/cpu.o GEN mips64el-linux-user/config-target.h CC mips64el-linux-user/exec.o CC microblazeel-linux-user/target/microblaze/gdbstub.o CC i386-linux-user/target/i386/int_helper.o CC microblaze-linux-user/target/microblaze/gdbstub.o CC mips64el-linux-user/translate-all.o GEN trace/generated-helpers.c CC i386-linux-user/target/i386/svm_helper.o GEN trace/generated-helpers.c CC microblazeel-linux-user/trace/control-target.o CC microblaze-linux-user/trace/control-target.o CC microblazeel-linux-user/trace/generated-helpers.o CC microblaze-linux-user/trace/generated-helpers.o LINK microblazeel-linux-user/qemu-microblazeel CC i386-linux-user/target/i386/smm_helper.o LINK microblaze-linux-user/qemu-microblaze CC mips64el-linux-user/cpu-exec.o CC mips64el-linux-user/translate-common.o CC i386-linux-user/target/i386/misc_helper.o CC mips64el-linux-user/cpu-exec-common.o CC mips64el-linux-user/tcg/tcg.o GEN mips64-linux-user/config-target.h CC mips64-linux-user/exec.o CC i386-linux-user/target/i386/mem_helper.o GEN mipsel-linux-user/config-target.h CC mipsel-linux-user/exec.o CC mips64-linux-user/translate-all.o CC i386-linux-user/target/i386/seg_helper.o CC mips64-linux-user/cpu-exec.o CC mipsel-linux-user/translate-all.o CC mips64-linux-user/translate-common.o CC mips64-linux-user/cpu-exec-common.o CC mipsel-linux-user/cpu-exec.o CC mips64-linux-user/tcg/tcg.o CC i386-linux-user/target/i386/mpx_helper.o CC mips64el-linux-user/tcg/tcg-op.o CC i386-linux-user/target/i386/gdbstub.o CC mipsel-linux-user/translate-common.o CC mipsel-linux-user/cpu-exec-common.o CC i386-linux-user/target/i386/kvm-stub.o CC mipsel-linux-user/tcg/tcg.o GEN trace/generated-helpers.c CC i386-linux-user/trace/control-target.o CC i386-linux-user/trace/generated-helpers.o LINK i386-linux-user/qemu-i386 CC mips64-linux-user/tcg/tcg-op.o CC mips64el-linux-user/tcg/optimize.o CC mipsel-linux-user/tcg/tcg-op.o GEN mips-linux-user/config-target.h CC mips-linux-user/exec.o CC mips64el-linux-user/tcg/tcg-common.o CC mips-linux-user/translate-all.o CC mips64el-linux-user/fpu/softfloat.o CC mips-linux-user/cpu-exec.o CC mips64-linux-user/tcg/optimize.o CC mips-linux-user/translate-common.o CC mips-linux-user/cpu-exec-common.o CC mipsel-linux-user/tcg/optimize.o CC mips-linux-user/tcg/tcg.o CC mips64-linux-user/tcg/tcg-common.o CC mipsel-linux-user/tcg/tcg-common.o CC mips64-linux-user/fpu/softfloat.o CC mipsel-linux-user/fpu/softfloat.o CC mips64el-linux-user/disas.o CC mips64el-linux-user/tcg-runtime.o CC mips-linux-user/tcg/tcg-op.o CC mips64el-linux-user/hax-stub.o CC mips64-linux-user/disas.o CC mips64el-linux-user/kvm-stub.o CC mips64el-linux-user/gdbstub.o CC mips64-linux-user/tcg-runtime.o CC mipsel-linux-user/disas.o CC mips64el-linux-user/thunk.o CC mips64-linux-user/hax-stub.o CC mipsel-linux-user/tcg-runtime.o CC mips64el-linux-user/user-exec.o CC mips64-linux-user/kvm-stub.o CC mips-linux-user/tcg/optimize.o CC mips64el-linux-user/user-exec-stub.o CC mips64el-linux-user/linux-user/main.o CC mips64-linux-user/gdbstub.o CC mipsel-linux-user/hax-stub.o CC mips64el-linux-user/linux-user/syscall.o CC mipsel-linux-user/kvm-stub.o CC mips64-linux-user/thunk.o CC mips-linux-user/tcg/tcg-common.o CC mips-linux-user/fpu/softfloat.o CC mips64-linux-user/user-exec.o CC mipsel-linux-user/gdbstub.o CC mips64-linux-user/user-exec-stub.o CC mipsel-linux-user/thunk.o CC mips64-linux-user/linux-user/main.o CC mipsel-linux-user/user-exec.o CC mipsel-linux-user/user-exec-stub.o CC mips64-linux-user/linux-user/syscall.o CC mipsel-linux-user/linux-user/main.o CC mips-linux-user/disas.o CC mipsel-linux-user/linux-user/syscall.o CC mips-linux-user/tcg-runtime.o CC mips64el-linux-user/linux-user/strace.o CC mips-linux-user/hax-stub.o CC mips64el-linux-user/linux-user/mmap.o CC mips-linux-user/kvm-stub.o CC mips-linux-user/gdbstub.o CC mips64el-linux-user/linux-user/signal.o CC mips-linux-user/thunk.o CC mips64-linux-user/linux-user/strace.o CC mips64el-linux-user/linux-user/elfload.o CC mips-linux-user/user-exec.o CC mips64-linux-user/linux-user/mmap.o CC mips64el-linux-user/linux-user/linuxload.o CC mips-linux-user/user-exec-stub.o CC mips64el-linux-user/linux-user/uaccess.o CC mips64-linux-user/linux-user/signal.o CC mips-linux-user/linux-user/main.o CC mips64el-linux-user/linux-user/uname.o CC mips64-linux-user/linux-user/elfload.o CC mips-linux-user/linux-user/syscall.o CCAS mips64el-linux-user/linux-user/safe-syscall.o CC mipsel-linux-user/linux-user/strace.o CC mips64el-linux-user/target/mips/translate.o CC mips64-linux-user/linux-user/linuxload.o CC mipsel-linux-user/linux-user/mmap.o CC mips64-linux-user/linux-user/uaccess.o CC mipsel-linux-user/linux-user/signal.o CC mips64-linux-user/linux-user/uname.o CC mipsel-linux-user/linux-user/elfload.o CCAS mips64-linux-user/linux-user/safe-syscall.o CC mips64-linux-user/target/mips/translate.o CC mipsel-linux-user/linux-user/linuxload.o CC mipsel-linux-user/linux-user/uaccess.o CC mips-linux-user/linux-user/strace.o CC mipsel-linux-user/linux-user/uname.o CCAS mipsel-linux-user/linux-user/safe-syscall.o CC mipsel-linux-user/target/mips/translate.o CC mips-linux-user/linux-user/mmap.o CC mips-linux-user/linux-user/signal.o CC mips64el-linux-user/target/mips/dsp_helper.o CC mips-linux-user/linux-user/elfload.o CC mips64el-linux-user/target/mips/op_helper.o CC mips64-linux-user/target/mips/dsp_helper.o CC mips-linux-user/linux-user/linuxload.o CC mips-linux-user/linux-user/uaccess.o CC mips-linux-user/linux-user/uname.o CC mips64-linux-user/target/mips/op_helper.o CCAS mips-linux-user/linux-user/safe-syscall.o CC mipsel-linux-user/target/mips/dsp_helper.o CC mips-linux-user/target/mips/translate.o CC mipsel-linux-user/target/mips/op_helper.o CC mips64el-linux-user/target/mips/lmi_helper.o CC mips64el-linux-user/target/mips/helper.o CC mips64-linux-user/target/mips/lmi_helper.o CC mips64el-linux-user/target/mips/cpu.o CC mips64-linux-user/target/mips/helper.o CC mips64el-linux-user/target/mips/gdbstub.o CC mips64el-linux-user/target/mips/msa_helper.o CC mips64-linux-user/target/mips/cpu.o CC mips64-linux-user/target/mips/gdbstub.o CC mipsel-linux-user/target/mips/lmi_helper.o CC mips64-linux-user/target/mips/msa_helper.o CC mipsel-linux-user/target/mips/helper.o CC mipsel-linux-user/target/mips/cpu.o CC mipsel-linux-user/target/mips/gdbstub.o CC mipsel-linux-user/target/mips/msa_helper.o CC mips-linux-user/target/mips/dsp_helper.o CC mips-linux-user/target/mips/op_helper.o CC mips64el-linux-user/target/mips/mips-semi.o GEN trace/generated-helpers.c CC mips64el-linux-user/trace/control-target.o CC mips64-linux-user/target/mips/mips-semi.o CC mips64el-linux-user/trace/generated-helpers.o GEN trace/generated-helpers.c CC mips64-linux-user/trace/control-target.o CC mips-linux-user/target/mips/lmi_helper.o LINK mips64el-linux-user/qemu-mips64el CC mips-linux-user/target/mips/helper.o CC mipsel-linux-user/target/mips/mips-semi.o CC mips64-linux-user/trace/generated-helpers.o GEN trace/generated-helpers.c CC mipsel-linux-user/trace/control-target.o CC mips-linux-user/target/mips/cpu.o LINK mips64-linux-user/qemu-mips64 CC mipsel-linux-user/trace/generated-helpers.o CC mips-linux-user/target/mips/gdbstub.o GEN mipsn32el-linux-user/config-target.h CC mipsn32el-linux-user/exec.o LINK mipsel-linux-user/qemu-mipsel CC mips-linux-user/target/mips/msa_helper.o CC mipsn32el-linux-user/translate-all.o GEN mipsn32-linux-user/config-target.h CC mipsn32el-linux-user/cpu-exec.o CC mipsn32-linux-user/exec.o CC mipsn32-linux-user/translate-all.o CC mipsn32el-linux-user/translate-common.o CC mipsn32el-linux-user/cpu-exec-common.o CC mipsn32-linux-user/cpu-exec.o CC mipsn32el-linux-user/tcg/tcg.o CC mipsn32el-linux-user/tcg/tcg-op.o CC mipsn32-linux-user/translate-common.o CC mipsn32-linux-user/cpu-exec-common.o CC mipsn32-linux-user/tcg/tcg.o CC mipsn32-linux-user/tcg/tcg-op.o CC mips-linux-user/target/mips/mips-semi.o CC mipsn32el-linux-user/tcg/optimize.o GEN trace/generated-helpers.c CC mips-linux-user/trace/control-target.o CC mips-linux-user/trace/generated-helpers.o LINK mips-linux-user/qemu-mips CC mipsn32el-linux-user/tcg/tcg-common.o GEN nios2-linux-user/config-target.h CC nios2-linux-user/exec.o CC nios2-linux-user/translate-all.o CC mipsn32el-linux-user/fpu/softfloat.o CC mipsn32el-linux-user/disas.o CC nios2-linux-user/cpu-exec.o CC nios2-linux-user/translate-common.o CC mipsn32el-linux-user/tcg-runtime.o CC mipsn32-linux-user/tcg/optimize.o CC nios2-linux-user/cpu-exec-common.o CC nios2-linux-user/tcg/tcg.o CC mipsn32el-linux-user/hax-stub.o CC mipsn32el-linux-user/kvm-stub.o CC mipsn32-linux-user/tcg/tcg-common.o CC nios2-linux-user/tcg/tcg-op.o CC mipsn32-linux-user/fpu/softfloat.o CC mipsn32el-linux-user/gdbstub.o CC nios2-linux-user/tcg/optimize.o CC mipsn32el-linux-user/thunk.o CC mipsn32el-linux-user/user-exec.o CC nios2-linux-user/tcg/tcg-common.o CC mipsn32el-linux-user/user-exec-stub.o CC mipsn32el-linux-user/linux-user/main.o CC nios2-linux-user/fpu/softfloat.o CC mipsn32-linux-user/disas.o CC mipsn32el-linux-user/linux-user/syscall.o CC nios2-linux-user/disas.o CC mipsn32-linux-user/tcg-runtime.o GEN or1k-linux-user/config-target.h CC or1k-linux-user/exec.o CC mipsn32-linux-user/hax-stub.o CC or1k-linux-user/translate-all.o CC mipsn32-linux-user/kvm-stub.o CC or1k-linux-user/cpu-exec.o CC mipsn32-linux-user/gdbstub.o CC nios2-linux-user/tcg-runtime.o CC or1k-linux-user/translate-common.o CC or1k-linux-user/cpu-exec-common.o CC mipsn32-linux-user/thunk.o CC or1k-linux-user/tcg/tcg.o CC nios2-linux-user/hax-stub.o CC mipsn32-linux-user/user-exec.o CC nios2-linux-user/kvm-stub.o CC mipsn32-linux-user/user-exec-stub.o CC mipsn32el-linux-user/linux-user/strace.o CC nios2-linux-user/gdbstub.o CC mipsn32-linux-user/linux-user/main.o CC mipsn32el-linux-user/linux-user/mmap.o CC nios2-linux-user/thunk.o CC mipsn32-linux-user/linux-user/syscall.o CC or1k-linux-user/tcg/tcg-op.o CC nios2-linux-user/user-exec.o CC mipsn32el-linux-user/linux-user/signal.o CC nios2-linux-user/user-exec-stub.o CC mipsn32el-linux-user/linux-user/elfload.o CC nios2-linux-user/linux-user/main.o CC nios2-linux-user/linux-user/syscall.o CC mipsn32el-linux-user/linux-user/linuxload.o CC mipsn32el-linux-user/linux-user/uaccess.o CC or1k-linux-user/tcg/optimize.o CC mipsn32el-linux-user/linux-user/uname.o CC or1k-linux-user/tcg/tcg-common.o CC mipsn32-linux-user/linux-user/strace.o CCAS mipsn32el-linux-user/linux-user/safe-syscall.o CC mipsn32el-linux-user/target/mips/translate.o CC or1k-linux-user/fpu/softfloat.o CC mipsn32-linux-user/linux-user/mmap.o CC mipsn32-linux-user/linux-user/signal.o CC nios2-linux-user/linux-user/strace.o CC mipsn32-linux-user/linux-user/elfload.o CC nios2-linux-user/linux-user/mmap.o CC or1k-linux-user/disas.o CC mipsn32-linux-user/linux-user/linuxload.o CC or1k-linux-user/tcg-runtime.o CC nios2-linux-user/linux-user/signal.o CC mipsn32-linux-user/linux-user/uaccess.o CC or1k-linux-user/hax-stub.o CC nios2-linux-user/linux-user/elfload.o CC mipsn32-linux-user/linux-user/uname.o CC or1k-linux-user/kvm-stub.o CCAS mipsn32-linux-user/linux-user/safe-syscall.o CC mipsn32-linux-user/target/mips/translate.o CC nios2-linux-user/linux-user/linuxload.o CC or1k-linux-user/gdbstub.o CC nios2-linux-user/linux-user/uaccess.o CC nios2-linux-user/linux-user/uname.o CC or1k-linux-user/thunk.o CCAS nios2-linux-user/linux-user/safe-syscall.o CC nios2-linux-user/target/nios2/translate.o CC mipsn32el-linux-user/target/mips/dsp_helper.o CC or1k-linux-user/user-exec.o CC nios2-linux-user/target/nios2/op_helper.o CC nios2-linux-user/target/nios2/helper.o CC or1k-linux-user/user-exec-stub.o CC nios2-linux-user/target/nios2/cpu.o CC nios2-linux-user/target/nios2/mmu.o CC or1k-linux-user/linux-user/main.o GEN trace/generated-helpers.c CC nios2-linux-user/trace/control-target.o CC mipsn32el-linux-user/target/mips/op_helper.o CC nios2-linux-user/trace/generated-helpers.o CC or1k-linux-user/linux-user/syscall.o LINK nios2-linux-user/qemu-nios2 CC or1k-linux-user/linux-user/strace.o CC mipsn32-linux-user/target/mips/dsp_helper.o CC or1k-linux-user/linux-user/mmap.o CC mipsn32el-linux-user/target/mips/lmi_helper.o CC mipsn32-linux-user/target/mips/op_helper.o CC mipsn32el-linux-user/target/mips/helper.o CC or1k-linux-user/linux-user/signal.o CC mipsn32el-linux-user/target/mips/cpu.o CC or1k-linux-user/linux-user/elfload.o CC mipsn32-linux-user/target/mips/lmi_helper.o CC mipsn32el-linux-user/target/mips/gdbstub.o CC or1k-linux-user/linux-user/linuxload.o CC mipsn32el-linux-user/target/mips/msa_helper.o CC mipsn32-linux-user/target/mips/helper.o CC or1k-linux-user/linux-user/uaccess.o CC or1k-linux-user/linux-user/uname.o CC mipsn32-linux-user/target/mips/cpu.o GEN ppc64abi32-linux-user/config-target.h CC ppc64abi32-linux-user/exec.o CCAS or1k-linux-user/linux-user/safe-syscall.o CC mipsn32-linux-user/target/mips/gdbstub.o CC or1k-linux-user/target/openrisc/cpu.o CC ppc64abi32-linux-user/translate-all.o CC mipsn32-linux-user/target/mips/msa_helper.o CC or1k-linux-user/target/openrisc/exception.o CC ppc64abi32-linux-user/cpu-exec.o CC or1k-linux-user/target/openrisc/interrupt.o CC ppc64abi32-linux-user/translate-common.o CC or1k-linux-user/target/openrisc/mmu.o CC ppc64abi32-linux-user/cpu-exec-common.o CC or1k-linux-user/target/openrisc/translate.o CC ppc64abi32-linux-user/tcg/tcg.o CC or1k-linux-user/target/openrisc/exception_helper.o CC mipsn32el-linux-user/target/mips/mips-semi.o CC or1k-linux-user/target/openrisc/fpu_helper.o GEN trace/generated-helpers.c CC mipsn32el-linux-user/trace/control-target.o CC or1k-linux-user/target/openrisc/interrupt_helper.o CC mipsn32el-linux-user/trace/generated-helpers.o CC ppc64abi32-linux-user/tcg/tcg-op.o CC or1k-linux-user/target/openrisc/mmu_helper.o LINK mipsn32el-linux-user/qemu-mipsn32el CC mipsn32-linux-user/target/mips/mips-semi.o CC or1k-linux-user/target/openrisc/sys_helper.o CC or1k-linux-user/target/openrisc/gdbstub.o GEN trace/generated-helpers.c CC mipsn32-linux-user/trace/control-target.o GEN ppc64le-linux-user/config-target.h CC ppc64le-linux-user/exec.o GEN trace/generated-helpers.c CC mipsn32-linux-user/trace/generated-helpers.o CC or1k-linux-user/trace/control-target.o LINK mipsn32-linux-user/qemu-mipsn32 CC ppc64le-linux-user/translate-all.o CC or1k-linux-user/trace/generated-helpers.o CC ppc64le-linux-user/cpu-exec.o CC ppc64le-linux-user/translate-common.o GEN ppc64-linux-user/config-target.h CC ppc64-linux-user/exec.o LINK or1k-linux-user/qemu-or1k CC ppc64le-linux-user/cpu-exec-common.o CC ppc64-linux-user/translate-all.o CC ppc64-linux-user/cpu-exec.o CC ppc64le-linux-user/tcg/tcg.o CC ppc64-linux-user/translate-common.o CC ppc64-linux-user/cpu-exec-common.o CC ppc64abi32-linux-user/tcg/optimize.o CC ppc64-linux-user/tcg/tcg.o GEN ppc-linux-user/config-target.h CC ppc-linux-user/exec.o CC ppc64abi32-linux-user/tcg/tcg-common.o CC ppc64abi32-linux-user/fpu/softfloat.o CC ppc-linux-user/translate-all.o CC ppc64le-linux-user/tcg/tcg-op.o CC ppc64-linux-user/tcg/tcg-op.o CC ppc-linux-user/cpu-exec.o CC ppc-linux-user/translate-common.o CC ppc-linux-user/cpu-exec-common.o CC ppc64abi32-linux-user/disas.o CC ppc-linux-user/tcg/tcg.o CC ppc64le-linux-user/tcg/optimize.o CC ppc64abi32-linux-user/tcg-runtime.o CC ppc64-linux-user/tcg/optimize.o GEN ppc64abi32-linux-user/gdbstub-xml.c CC ppc64-linux-user/tcg/tcg-common.o CC ppc64abi32-linux-user/hax-stub.o CC ppc64le-linux-user/tcg/tcg-common.o CC ppc64-linux-user/fpu/softfloat.o CC ppc64abi32-linux-user/kvm-stub.o CC ppc64le-linux-user/fpu/softfloat.o CC ppc64abi32-linux-user/libdecnumber/decContext.o CC ppc-linux-user/tcg/tcg-op.o CC ppc64abi32-linux-user/libdecnumber/decNumber.o CC ppc64abi32-linux-user/libdecnumber/dpd/decimal32.o CC ppc64-linux-user/disas.o CC ppc64abi32-linux-user/libdecnumber/dpd/decimal64.o CC ppc64-linux-user/tcg-runtime.o CC ppc64le-linux-user/disas.o CC ppc64abi32-linux-user/libdecnumber/dpd/decimal128.o CC ppc-linux-user/tcg/optimize.o CC ppc64abi32-linux-user/gdbstub.o CC ppc64le-linux-user/tcg-runtime.o GEN ppc64-linux-user/gdbstub-xml.c CC ppc64abi32-linux-user/thunk.o CC ppc64-linux-user/hax-stub.o GEN ppc64le-linux-user/gdbstub-xml.c CC ppc64-linux-user/kvm-stub.o CC ppc64abi32-linux-user/user-exec.o CC ppc64-linux-user/libdecnumber/decContext.o CC ppc64le-linux-user/hax-stub.o CC ppc64abi32-linux-user/user-exec-stub.o CC ppc-linux-user/tcg/tcg-common.o CC ppc64-linux-user/libdecnumber/decNumber.o CC ppc64abi32-linux-user/linux-user/main.o CC ppc64le-linux-user/kvm-stub.o CC ppc-linux-user/fpu/softfloat.o CC ppc64le-linux-user/libdecnumber/decContext.o CC ppc64abi32-linux-user/linux-user/syscall.o CC ppc64le-linux-user/libdecnumber/decNumber.o CC ppc64-linux-user/libdecnumber/dpd/decimal32.o CC ppc64-linux-user/libdecnumber/dpd/decimal64.o CC ppc64le-linux-user/libdecnumber/dpd/decimal32.o CC ppc64-linux-user/libdecnumber/dpd/decimal128.o CC ppc64le-linux-user/libdecnumber/dpd/decimal64.o CC ppc64-linux-user/gdbstub.o CC ppc-linux-user/disas.o CC ppc64le-linux-user/libdecnumber/dpd/decimal128.o CC ppc-linux-user/tcg-runtime.o CC ppc64-linux-user/thunk.o CC ppc64le-linux-user/gdbstub.o GEN ppc-linux-user/gdbstub-xml.c CC ppc64-linux-user/user-exec.o CC ppc64-linux-user/user-exec-stub.o CC ppc-linux-user/hax-stub.o CC ppc64-linux-user/linux-user/main.o CC ppc64le-linux-user/thunk.o CC ppc-linux-user/kvm-stub.o CC ppc64abi32-linux-user/linux-user/strace.o CC ppc-linux-user/libdecnumber/decContext.o CC ppc64le-linux-user/user-exec.o CC ppc64-linux-user/linux-user/syscall.o CC ppc-linux-user/libdecnumber/decNumber.o CC ppc64le-linux-user/user-exec-stub.o CC ppc64abi32-linux-user/linux-user/mmap.o CC ppc64le-linux-user/linux-user/main.o CC ppc64abi32-linux-user/linux-user/signal.o CC ppc64le-linux-user/linux-user/syscall.o CC ppc64abi32-linux-user/linux-user/elfload.o CC ppc-linux-user/libdecnumber/dpd/decimal32.o CC ppc-linux-user/libdecnumber/dpd/decimal64.o CC ppc-linux-user/libdecnumber/dpd/decimal128.o CC ppc64abi32-linux-user/linux-user/linuxload.o CC ppc-linux-user/gdbstub.o CC ppc64abi32-linux-user/linux-user/uaccess.o CC ppc-linux-user/thunk.o CC ppc64abi32-linux-user/linux-user/uname.o CCAS ppc64abi32-linux-user/linux-user/safe-syscall.o CC ppc-linux-user/user-exec.o CC ppc64abi32-linux-user/target/ppc/cpu-models.o CC ppc64-linux-user/linux-user/strace.o CC ppc-linux-user/user-exec-stub.o CC ppc-linux-user/linux-user/main.o CC ppc64-linux-user/linux-user/mmap.o CC ppc64le-linux-user/linux-user/strace.o CC ppc-linux-user/linux-user/syscall.o CC ppc64abi32-linux-user/target/ppc/translate.o CC ppc64-linux-user/linux-user/signal.o CC ppc64le-linux-user/linux-user/mmap.o CC ppc64-linux-user/linux-user/elfload.o CC ppc64le-linux-user/linux-user/signal.o CC ppc64le-linux-user/linux-user/elfload.o CC ppc64-linux-user/linux-user/linuxload.o CC ppc64-linux-user/linux-user/uaccess.o CC ppc64le-linux-user/linux-user/linuxload.o CC ppc64-linux-user/linux-user/uname.o CC ppc64le-linux-user/linux-user/uaccess.o CCAS ppc64-linux-user/linux-user/safe-syscall.o CC ppc64-linux-user/target/ppc/cpu-models.o CC ppc64le-linux-user/linux-user/uname.o CCAS ppc64le-linux-user/linux-user/safe-syscall.o CC ppc-linux-user/linux-user/strace.o CC ppc64le-linux-user/target/ppc/cpu-models.o CC ppc64-linux-user/target/ppc/translate.o CC ppc-linux-user/linux-user/mmap.o CC ppc-linux-user/linux-user/signal.o CC ppc-linux-user/linux-user/elfload.o CC ppc64le-linux-user/target/ppc/translate.o CC ppc-linux-user/linux-user/linuxload.o CC ppc-linux-user/linux-user/uaccess.o CC ppc-linux-user/linux-user/uname.o CCAS ppc-linux-user/linux-user/safe-syscall.o CC ppc-linux-user/target/ppc/cpu-models.o CC ppc-linux-user/target/ppc/translate.o CC ppc64abi32-linux-user/target/ppc/kvm-stub.o CC ppc64abi32-linux-user/target/ppc/dfp_helper.o CC ppc64abi32-linux-user/target/ppc/excp_helper.o CC ppc64abi32-linux-user/target/ppc/fpu_helper.o CC ppc64-linux-user/target/ppc/kvm-stub.o CC ppc64le-linux-user/target/ppc/kvm-stub.o CC ppc64le-linux-user/target/ppc/dfp_helper.o CC ppc64-linux-user/target/ppc/dfp_helper.o CC ppc64le-linux-user/target/ppc/excp_helper.o CC ppc64abi32-linux-user/target/ppc/int_helper.o CC ppc64le-linux-user/target/ppc/fpu_helper.o CC ppc64-linux-user/target/ppc/excp_helper.o CC ppc64-linux-user/target/ppc/fpu_helper.o CC ppc64abi32-linux-user/target/ppc/timebase_helper.o CC ppc64abi32-linux-user/target/ppc/misc_helper.o CC ppc64abi32-linux-user/target/ppc/mem_helper.o CC ppc-linux-user/target/ppc/kvm-stub.o CC ppc64abi32-linux-user/target/ppc/user_only_helper.o CC ppc-linux-user/target/ppc/dfp_helper.o CC ppc64abi32-linux-user/target/ppc/gdbstub.o GEN trace/generated-helpers.c CC ppc64abi32-linux-user/trace/control-target.o CC ppc-linux-user/target/ppc/excp_helper.o CC ppc64abi32-linux-user/gdbstub-xml.o CC ppc64abi32-linux-user/trace/generated-helpers.o LINK ppc64abi32-linux-user/qemu-ppc64abi32 CC ppc-linux-user/target/ppc/fpu_helper.o CC ppc64-linux-user/target/ppc/int_helper.o CC ppc64le-linux-user/target/ppc/int_helper.o CC ppc64le-linux-user/target/ppc/timebase_helper.o CC ppc64le-linux-user/target/ppc/misc_helper.o CC ppc64-linux-user/target/ppc/timebase_helper.o CC s390x-linux-user/gen-features GEN s390x-linux-user/config-target.h GEN s390x-linux-user/gen-features.h CC s390x-linux-user/exec.o CC ppc64le-linux-user/target/ppc/mem_helper.o CC ppc64-linux-user/target/ppc/misc_helper.o CC s390x-linux-user/translate-all.o CC ppc64le-linux-user/target/ppc/user_only_helper.o CC ppc64-linux-user/target/ppc/mem_helper.o CC ppc64le-linux-user/target/ppc/gdbstub.o CC s390x-linux-user/cpu-exec.o CC ppc64-linux-user/target/ppc/user_only_helper.o GEN trace/generated-helpers.c CC ppc64le-linux-user/trace/control-target.o CC s390x-linux-user/translate-common.o CC ppc64-linux-user/target/ppc/gdbstub.o CC ppc64le-linux-user/gdbstub-xml.o CC s390x-linux-user/cpu-exec-common.o CC ppc64le-linux-user/trace/generated-helpers.o GEN trace/generated-helpers.c CC ppc-linux-user/target/ppc/int_helper.o CC ppc64-linux-user/trace/control-target.o CC s390x-linux-user/tcg/tcg.o LINK ppc64le-linux-user/qemu-ppc64le CC ppc64-linux-user/gdbstub-xml.o CC s390x-linux-user/tcg/tcg-op.o CC ppc64-linux-user/trace/generated-helpers.o LINK ppc64-linux-user/qemu-ppc64 CC ppc-linux-user/target/ppc/timebase_helper.o GEN sh4eb-linux-user/config-target.h CC ppc-linux-user/target/ppc/misc_helper.o CC sh4eb-linux-user/exec.o CC s390x-linux-user/tcg/optimize.o CC ppc-linux-user/target/ppc/mem_helper.o CC sh4eb-linux-user/translate-all.o CC sh4eb-linux-user/cpu-exec.o CC ppc-linux-user/target/ppc/user_only_helper.o CC ppc-linux-user/target/ppc/gdbstub.o CC sh4eb-linux-user/translate-common.o CC s390x-linux-user/tcg/tcg-common.o CC sh4eb-linux-user/cpu-exec-common.o CC sh4eb-linux-user/tcg/tcg.o GEN trace/generated-helpers.c CC ppc-linux-user/trace/control-target.o CC s390x-linux-user/fpu/softfloat.o CC s390x-linux-user/disas.o CC ppc-linux-user/gdbstub-xml.o CC sh4eb-linux-user/tcg/tcg-op.o CC ppc-linux-user/trace/generated-helpers.o LINK ppc-linux-user/qemu-ppc CC sh4eb-linux-user/tcg/optimize.o CC s390x-linux-user/tcg-runtime.o CC sh4eb-linux-user/tcg/tcg-common.o CC sh4eb-linux-user/fpu/softfloat.o CC sh4eb-linux-user/disas.o GEN s390x-linux-user/gdbstub-xml.c CC sh4eb-linux-user/tcg-runtime.o GEN sh4-linux-user/config-target.h CC sh4-linux-user/exec.o CC sh4-linux-user/translate-all.o GEN sparc32plus-linux-user/config-target.h CC sparc32plus-linux-user/exec.o CC s390x-linux-user/hax-stub.o CC sh4-linux-user/cpu-exec.o CC s390x-linux-user/kvm-stub.o CC sparc32plus-linux-user/translate-all.o CC sh4-linux-user/translate-common.o CC s390x-linux-user/gdbstub.o CC sh4-linux-user/cpu-exec-common.o CC sparc32plus-linux-user/cpu-exec.o CC sh4-linux-user/tcg/tcg.o CC s390x-linux-user/thunk.o CC sparc32plus-linux-user/translate-common.o CC s390x-linux-user/user-exec.o CC sh4eb-linux-user/hax-stub.o CC sparc32plus-linux-user/cpu-exec-common.o CC s390x-linux-user/user-exec-stub.o CC sh4eb-linux-user/kvm-stub.o CC sparc32plus-linux-user/tcg/tcg.o CC s390x-linux-user/linux-user/main.o CC sh4eb-linux-user/gdbstub.o CC s390x-linux-user/linux-user/syscall.o CC sh4-linux-user/tcg/tcg-op.o CC sh4eb-linux-user/thunk.o CC sparc32plus-linux-user/tcg/tcg-op.o CC sh4eb-linux-user/user-exec.o CC sh4eb-linux-user/user-exec-stub.o CC sh4eb-linux-user/linux-user/main.o CC sh4-linux-user/tcg/optimize.o CC sh4eb-linux-user/linux-user/syscall.o CC sparc32plus-linux-user/tcg/optimize.o CC s390x-linux-user/linux-user/strace.o CC sh4-linux-user/tcg/tcg-common.o CC sh4-linux-user/fpu/softfloat.o CC sparc32plus-linux-user/tcg/tcg-common.o CC sparc32plus-linux-user/fpu/softfloat.o CC s390x-linux-user/linux-user/mmap.o CC s390x-linux-user/linux-user/signal.o CC s390x-linux-user/linux-user/elfload.o CC sparc32plus-linux-user/disas.o CC s390x-linux-user/linux-user/linuxload.o CC sh4eb-linux-user/linux-user/strace.o CC sh4-linux-user/disas.o CC sparc32plus-linux-user/tcg-runtime.o CC s390x-linux-user/linux-user/uaccess.o CC sh4-linux-user/tcg-runtime.o CC sh4eb-linux-user/linux-user/mmap.o CC s390x-linux-user/linux-user/uname.o CC sparc32plus-linux-user/hax-stub.o CCAS s390x-linux-user/linux-user/safe-syscall.o CC s390x-linux-user/target/s390x/translate.o CC sparc32plus-linux-user/kvm-stub.o CC sh4-linux-user/hax-stub.o CC sh4eb-linux-user/linux-user/signal.o CC sparc32plus-linux-user/gdbstub.o CC sh4-linux-user/kvm-stub.o CC sh4-linux-user/gdbstub.o CC sparc32plus-linux-user/thunk.o CC sh4eb-linux-user/linux-user/elfload.o CC sparc32plus-linux-user/user-exec.o CC sh4-linux-user/thunk.o CC sparc32plus-linux-user/user-exec-stub.o CC sh4eb-linux-user/linux-user/linuxload.o CC sh4-linux-user/user-exec.o CC sparc32plus-linux-user/linux-user/main.o CC sh4eb-linux-user/linux-user/uaccess.o CC sh4-linux-user/user-exec-stub.o CC sh4eb-linux-user/linux-user/uname.o CC sh4-linux-user/linux-user/main.o CC sparc32plus-linux-user/linux-user/syscall.o CC s390x-linux-user/target/s390x/helper.o CCAS sh4eb-linux-user/linux-user/safe-syscall.o CC sh4eb-linux-user/linux-user/flatload.o CC sh4-linux-user/linux-user/syscall.o CC s390x-linux-user/target/s390x/cpu.o CC sh4eb-linux-user/target/sh4/translate.o CC s390x-linux-user/target/s390x/interrupt.o CC s390x-linux-user/target/s390x/int_helper.o CC s390x-linux-user/target/s390x/fpu_helper.o CC sh4eb-linux-user/target/sh4/op_helper.o CC s390x-linux-user/target/s390x/cc_helper.o CC sh4eb-linux-user/target/sh4/helper.o CC sh4eb-linux-user/target/sh4/cpu.o CC s390x-linux-user/target/s390x/mem_helper.o CC sh4eb-linux-user/target/sh4/gdbstub.o GEN trace/generated-helpers.c CC sh4eb-linux-user/trace/control-target.o CC sparc32plus-linux-user/linux-user/strace.o CC sh4-linux-user/linux-user/strace.o CC sh4eb-linux-user/trace/generated-helpers.o CC s390x-linux-user/target/s390x/misc_helper.o CC sparc32plus-linux-user/linux-user/mmap.o CC s390x-linux-user/target/s390x/gdbstub.o LINK sh4eb-linux-user/qemu-sh4eb CC s390x-linux-user/target/s390x/cpu_models.o CC sparc32plus-linux-user/linux-user/signal.o CC sh4-linux-user/linux-user/mmap.o CC s390x-linux-user/target/s390x/cpu_features.o GEN trace/generated-helpers.c GEN sparc64-linux-user/config-target.h CC sparc64-linux-user/exec.o CC s390x-linux-user/trace/control-target.o CC sparc32plus-linux-user/linux-user/elfload.o CC sh4-linux-user/linux-user/signal.o CC sparc64-linux-user/translate-all.o CC sparc32plus-linux-user/linux-user/linuxload.o CC s390x-linux-user/gdbstub-xml.o CC s390x-linux-user/trace/generated-helpers.o CC sh4-linux-user/linux-user/elfload.o CC sparc32plus-linux-user/linux-user/uaccess.o CC sparc64-linux-user/cpu-exec.o CC sparc32plus-linux-user/linux-user/uname.o LINK s390x-linux-user/qemu-s390x CCAS sparc32plus-linux-user/linux-user/safe-syscall.o CC sparc32plus-linux-user/target/sparc/translate.o CC sparc64-linux-user/translate-common.o CC sh4-linux-user/linux-user/linuxload.o GEN sparc-linux-user/config-target.h CC sparc-linux-user/exec.o CC sh4-linux-user/linux-user/uaccess.o CC sparc64-linux-user/cpu-exec-common.o CC sh4-linux-user/linux-user/uname.o CC sparc-linux-user/translate-all.o CCAS sh4-linux-user/linux-user/safe-syscall.o CC sparc64-linux-user/tcg/tcg.o CC sh4-linux-user/linux-user/flatload.o CC sparc-linux-user/cpu-exec.o CC sh4-linux-user/target/sh4/translate.o CC sparc-linux-user/translate-common.o CC sparc32plus-linux-user/target/sparc/helper.o CC sparc-linux-user/cpu-exec-common.o CC sparc32plus-linux-user/target/sparc/cpu.o CC sparc64-linux-user/tcg/tcg-op.o CC sparc32plus-linux-user/target/sparc/fop_helper.o CC sparc-linux-user/tcg/tcg.o CC sparc32plus-linux-user/target/sparc/cc_helper.o CC sh4-linux-user/target/sh4/op_helper.o CC sh4-linux-user/target/sh4/helper.o CC sparc32plus-linux-user/target/sparc/win_helper.o CC sh4-linux-user/target/sh4/cpu.o CC sparc32plus-linux-user/target/sparc/mmu_helper.o CC sh4-linux-user/target/sh4/gdbstub.o CC sparc-linux-user/tcg/tcg-op.o GEN trace/generated-helpers.c CC sh4-linux-user/trace/control-target.o CC sparc32plus-linux-user/target/sparc/ldst_helper.o CC sparc64-linux-user/tcg/optimize.o CC sh4-linux-user/trace/generated-helpers.o CC sparc32plus-linux-user/target/sparc/int64_helper.o CC sparc32plus-linux-user/target/sparc/vis_helper.o CC sparc32plus-linux-user/target/sparc/gdbstub.o LINK sh4-linux-user/qemu-sh4 CC sparc64-linux-user/tcg/tcg-common.o GEN trace/generated-helpers.c CC sparc64-linux-user/fpu/softfloat.o CC sparc32plus-linux-user/trace/control-target.o CC sparc64-linux-user/disas.o CC sparc32plus-linux-user/trace/generated-helpers.o LINK sparc32plus-linux-user/qemu-sparc32plus CC sparc64-linux-user/tcg-runtime.o GEN tilegx-linux-user/config-target.h CC tilegx-linux-user/exec.o CC sparc-linux-user/tcg/optimize.o CC tilegx-linux-user/translate-all.o CC sparc-linux-user/tcg/tcg-common.o CC tilegx-linux-user/cpu-exec.o GEN x86_64-linux-user/config-target.h CC x86_64-linux-user/exec.o CC sparc-linux-user/fpu/softfloat.o CC tilegx-linux-user/translate-common.o CC sparc64-linux-user/hax-stub.o CC x86_64-linux-user/translate-all.o CC tilegx-linux-user/cpu-exec-common.o CC sparc64-linux-user/kvm-stub.o CC tilegx-linux-user/tcg/tcg.o CC x86_64-linux-user/cpu-exec.o CC sparc64-linux-user/gdbstub.o CC x86_64-linux-user/translate-common.o CC x86_64-linux-user/cpu-exec-common.o CC sparc64-linux-user/thunk.o CC x86_64-linux-user/tcg/tcg.o CC sparc64-linux-user/user-exec.o CC sparc-linux-user/disas.o CC tilegx-linux-user/tcg/tcg-op.o CC sparc64-linux-user/user-exec-stub.o CC sparc-linux-user/tcg-runtime.o CC sparc64-linux-user/linux-user/main.o CC sparc64-linux-user/linux-user/syscall.o CC sparc-linux-user/hax-stub.o CC sparc-linux-user/kvm-stub.o CC x86_64-linux-user/tcg/tcg-op.o CC sparc-linux-user/gdbstub.o CC tilegx-linux-user/tcg/optimize.o CC sparc-linux-user/thunk.o CC tilegx-linux-user/tcg/tcg-common.o CC sparc-linux-user/user-exec.o CC tilegx-linux-user/fpu/softfloat.o CC sparc-linux-user/user-exec-stub.o CC x86_64-linux-user/tcg/optimize.o CC sparc64-linux-user/linux-user/strace.o CC sparc-linux-user/linux-user/main.o CC sparc-linux-user/linux-user/syscall.o CC x86_64-linux-user/tcg/tcg-common.o CC sparc64-linux-user/linux-user/mmap.o CC x86_64-linux-user/fpu/softfloat.o CC sparc64-linux-user/linux-user/signal.o CC tilegx-linux-user/disas.o CC sparc64-linux-user/linux-user/elfload.o CC tilegx-linux-user/tcg-runtime.o CC sparc64-linux-user/linux-user/linuxload.o CC tilegx-linux-user/hax-stub.o CC sparc64-linux-user/linux-user/uaccess.o CC tilegx-linux-user/kvm-stub.o CC tilegx-linux-user/gdbstub.o CC sparc64-linux-user/linux-user/uname.o CC sparc-linux-user/linux-user/strace.o CC x86_64-linux-user/disas.o CCAS sparc64-linux-user/linux-user/safe-syscall.o CC sparc64-linux-user/target/sparc/translate.o CC tilegx-linux-user/thunk.o CC x86_64-linux-user/tcg-runtime.o CC tilegx-linux-user/user-exec.o CC sparc-linux-user/linux-user/mmap.o CC x86_64-linux-user/hax-stub.o CC tilegx-linux-user/user-exec-stub.o CC sparc-linux-user/linux-user/signal.o CC x86_64-linux-user/kvm-stub.o CC tilegx-linux-user/linux-user/main.o CC sparc-linux-user/linux-user/elfload.o CC x86_64-linux-user/gdbstub.o CC tilegx-linux-user/linux-user/syscall.o CC sparc-linux-user/linux-user/linuxload.o CC sparc-linux-user/linux-user/uaccess.o CC x86_64-linux-user/thunk.o CC sparc64-linux-user/target/sparc/helper.o CC sparc-linux-user/linux-user/uname.o CC x86_64-linux-user/user-exec.o CC sparc64-linux-user/target/sparc/cpu.o CCAS sparc-linux-user/linux-user/safe-syscall.o CC sparc-linux-user/target/sparc/translate.o CC x86_64-linux-user/user-exec-stub.o CC sparc64-linux-user/target/sparc/fop_helper.o CC x86_64-linux-user/linux-user/main.o CC sparc64-linux-user/target/sparc/cc_helper.o CC sparc-linux-user/target/sparc/helper.o CC x86_64-linux-user/linux-user/syscall.o CC sparc64-linux-user/target/sparc/win_helper.o CC sparc-linux-user/target/sparc/cpu.o CC sparc-linux-user/target/sparc/fop_helper.o CC sparc64-linux-user/target/sparc/mmu_helper.o CC tilegx-linux-user/linux-user/strace.o CC sparc-linux-user/target/sparc/cc_helper.o CC sparc64-linux-user/target/sparc/ldst_helper.o CC sparc-linux-user/target/sparc/win_helper.o CC tilegx-linux-user/linux-user/mmap.o CC sparc64-linux-user/target/sparc/int64_helper.o CC sparc-linux-user/target/sparc/mmu_helper.o CC sparc64-linux-user/target/sparc/vis_helper.o CC tilegx-linux-user/linux-user/signal.o CC sparc-linux-user/target/sparc/ldst_helper.o CC sparc64-linux-user/target/sparc/gdbstub.o CC tilegx-linux-user/linux-user/elfload.o CC sparc-linux-user/target/sparc/int32_helper.o CC sparc-linux-user/target/sparc/gdbstub.o GEN trace/generated-helpers.c CC sparc64-linux-user/trace/control-target.o CC tilegx-linux-user/linux-user/linuxload.o GEN trace/generated-helpers.c CC sparc-linux-user/trace/control-target.o CC sparc-linux-user/trace/generated-helpers.o CC tilegx-linux-user/linux-user/uaccess.o CC sparc64-linux-user/trace/generated-helpers.o CC tilegx-linux-user/linux-user/uname.o CC x86_64-linux-user/linux-user/strace.o LINK sparc-linux-user/qemu-sparc LINK sparc64-linux-user/qemu-sparc64 CC x86_64-linux-user/linux-user/mmap.o CCAS tilegx-linux-user/linux-user/safe-syscall.o CC tilegx-linux-user/target/tilegx/cpu.o CC x86_64-linux-user/linux-user/signal.o CC tilegx-linux-user/target/tilegx/translate.o CC x86_64-linux-user/linux-user/elfload.o CC x86_64-linux-user/linux-user/linuxload.o CC tilegx-linux-user/target/tilegx/helper.o CC tilegx-linux-user/target/tilegx/simd_helper.o CC x86_64-linux-user/linux-user/uaccess.o GEN trace/generated-helpers.c CC x86_64-linux-user/linux-user/uname.o CCAS x86_64-linux-user/linux-user/safe-syscall.o CC tilegx-linux-user/trace/control-target.o CC x86_64-linux-user/target/i386/translate.o CC x86_64-linux-user/target/i386/helper.o CC x86_64-linux-user/target/i386/cpu.o CC tilegx-linux-user/trace/generated-helpers.o CC x86_64-linux-user/target/i386/bpt_helper.o CC x86_64-linux-user/target/i386/excp_helper.o LINK tilegx-linux-user/qemu-tilegx CC x86_64-linux-user/target/i386/fpu_helper.o CC x86_64-linux-user/target/i386/cc_helper.o CC x86_64-linux-user/target/i386/int_helper.o CC x86_64-linux-user/target/i386/svm_helper.o CC x86_64-linux-user/target/i386/smm_helper.o CC x86_64-linux-user/target/i386/misc_helper.o CC x86_64-linux-user/target/i386/mem_helper.o CC x86_64-linux-user/target/i386/seg_helper.o CC x86_64-linux-user/target/i386/mpx_helper.o CC x86_64-linux-user/target/i386/gdbstub.o CC x86_64-linux-user/target/i386/kvm-stub.o GEN trace/generated-helpers.c CC x86_64-linux-user/trace/control-target.o CC x86_64-linux-user/trace/generated-helpers.o LINK x86_64-linux-user/qemu-x86_64 TEST tests/qapi-schema/alternate-any.out TEST tests/qapi-schema/alternate-base.out TEST tests/qapi-schema/alternate-array.out TEST tests/qapi-schema/alternate-clash.out TEST tests/qapi-schema/alternate-conflict-dict.out TEST tests/qapi-schema/alternate-conflict-string.out TEST tests/qapi-schema/alternate-empty.out TEST tests/qapi-schema/alternate-nested.out TEST tests/qapi-schema/alternate-unknown.out TEST tests/qapi-schema/args-alternate.out TEST tests/qapi-schema/args-any.out TEST tests/qapi-schema/args-array-empty.out TEST tests/qapi-schema/args-array-unknown.out TEST tests/qapi-schema/args-bad-boxed.out TEST tests/qapi-schema/args-boxed-anon.out TEST tests/qapi-schema/args-boxed-empty.out TEST tests/qapi-schema/args-boxed-string.out TEST tests/qapi-schema/args-int.out TEST tests/qapi-schema/args-invalid.out TEST tests/qapi-schema/args-member-array-bad.out TEST tests/qapi-schema/args-member-case.out TEST tests/qapi-schema/args-member-unknown.out TEST tests/qapi-schema/args-name-clash.out TEST tests/qapi-schema/args-union.out TEST tests/qapi-schema/args-unknown.out TEST tests/qapi-schema/bad-base.out TEST tests/qapi-schema/bad-data.out TEST tests/qapi-schema/bad-ident.out TEST tests/qapi-schema/bad-type-bool.out TEST tests/qapi-schema/bad-type-dict.out TEST tests/qapi-schema/bad-type-int.out TEST tests/qapi-schema/base-cycle-direct.out TEST tests/qapi-schema/base-cycle-indirect.out TEST tests/qapi-schema/command-int.out TEST tests/qapi-schema/comments.out TEST tests/qapi-schema/doc-bad-args.out TEST tests/qapi-schema/doc-bad-symbol.out TEST tests/qapi-schema/doc-duplicated-arg.out TEST tests/qapi-schema/doc-duplicated-since.out TEST tests/qapi-schema/doc-duplicated-return.out TEST tests/qapi-schema/doc-empty-arg.out TEST tests/qapi-schema/doc-empty-section.out TEST tests/qapi-schema/doc-empty-symbol.out TEST tests/qapi-schema/doc-interleaved-section.out TEST tests/qapi-schema/doc-invalid-end.out TEST tests/qapi-schema/doc-invalid-end2.out TEST tests/qapi-schema/doc-invalid-return.out TEST tests/qapi-schema/doc-invalid-section.out TEST tests/qapi-schema/doc-invalid-start.out TEST tests/qapi-schema/doc-missing-colon.out TEST tests/qapi-schema/doc-missing-expr.out TEST tests/qapi-schema/doc-missing-space.out TEST tests/qapi-schema/doc-optional.out TEST tests/qapi-schema/double-data.out TEST tests/qapi-schema/double-type.out TEST tests/qapi-schema/duplicate-key.out TEST tests/qapi-schema/empty.out TEST tests/qapi-schema/enum-bad-name.out TEST tests/qapi-schema/enum-bad-prefix.out TEST tests/qapi-schema/enum-clash-member.out TEST tests/qapi-schema/enum-dict-member.out TEST tests/qapi-schema/enum-int-member.out TEST tests/qapi-schema/enum-member-case.out TEST tests/qapi-schema/enum-wrong-data.out TEST tests/qapi-schema/enum-missing-data.out TEST tests/qapi-schema/escape-outside-string.out TEST tests/qapi-schema/escape-too-big.out TEST tests/qapi-schema/escape-too-short.out TEST tests/qapi-schema/event-boxed-empty.out TEST tests/qapi-schema/event-case.out TEST tests/qapi-schema/event-nest-struct.out TEST tests/qapi-schema/flat-union-array-branch.out TEST tests/qapi-schema/flat-union-bad-base.out TEST tests/qapi-schema/flat-union-bad-discriminator.out TEST tests/qapi-schema/flat-union-base-any.out TEST tests/qapi-schema/flat-union-base-union.out TEST tests/qapi-schema/flat-union-clash-member.out TEST tests/qapi-schema/flat-union-empty.out TEST tests/qapi-schema/flat-union-incomplete-branch.out TEST tests/qapi-schema/flat-union-int-branch.out TEST tests/qapi-schema/flat-union-inline.out TEST tests/qapi-schema/flat-union-invalid-branch-key.out TEST tests/qapi-schema/flat-union-invalid-discriminator.out TEST tests/qapi-schema/flat-union-no-base.out TEST tests/qapi-schema/flat-union-optional-discriminator.out TEST tests/qapi-schema/flat-union-string-discriminator.out TEST tests/qapi-schema/funny-char.out TEST tests/qapi-schema/ident-with-escape.out TEST tests/qapi-schema/include-before-err.out TEST tests/qapi-schema/include-cycle.out TEST tests/qapi-schema/include-format-err.out TEST tests/qapi-schema/include-nested-err.out TEST tests/qapi-schema/include-no-file.out TEST tests/qapi-schema/include-relpath.out TEST tests/qapi-schema/include-non-file.out TEST tests/qapi-schema/include-repetition.out TEST tests/qapi-schema/include-self-cycle.out TEST tests/qapi-schema/include-simple.out TEST tests/qapi-schema/indented-expr.out TEST tests/qapi-schema/leading-comma-list.out TEST tests/qapi-schema/leading-comma-object.out TEST tests/qapi-schema/missing-colon.out TEST tests/qapi-schema/missing-comma-list.out TEST tests/qapi-schema/missing-comma-object.out TEST tests/qapi-schema/missing-type.out TEST tests/qapi-schema/nested-struct-data.out TEST tests/qapi-schema/non-objects.out TEST tests/qapi-schema/qapi-schema-test.out TEST tests/qapi-schema/quoted-structural-chars.out TEST tests/qapi-schema/redefined-builtin.out TEST tests/qapi-schema/redefined-command.out TEST tests/qapi-schema/redefined-event.out Files /var/tmp/patchew-tester-tmp-rfll8e28/src/tests/qapi-schema/qapi-schema-test.out and tests/qapi-schema/qapi-schema-test.test.out differ /var/tmp/patchew-tester-tmp-rfll8e28/src/tests/Makefile.include:843: recipe for target 'check-tests/qapi-schema/qapi-schema-test.json' failed make: *** [check-tests/qapi-schema/qapi-schema-test.json] Error 1 make: *** Waiting for unfinished jobs.... === OUTPUT END === Test command exited with code: 2 --- Email generated automatically by Patchew [http://patchew.org/]. Please send your feedback to patchew-devel@freelists.org ^ permalink raw reply [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH v2 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED @ 2017-02-22 18:04 Paolo Bonzini 2017-02-22 18:04 ` [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr Paolo Bonzini 0 siblings, 1 reply; 22+ messages in thread From: Paolo Bonzini @ 2017-02-22 18:04 UTC (permalink / raw) To: qemu-devel; +Cc: eblake, marcandre.lureau This is an alternative approach to simplifying the crash information patches. Currently, crash information is exposed twice, through a QOM property and through a method. This is because accessing QOM properties with QAPI struct types is a huge pain in the neck. Patch 1 fixes this by providing a simple and well-tested API, that takes care of integrating the QOM->QObject->QAPI steps into a single function. Patch 2 then eliminates the get_crash_info method. Patch 3 finally cleans up qemu_system_guest_panicked by passing a CPUState* argument instead of a GuestPanicInformation struct. Paolo v1->v2: include missing changes to tests/qapi-schema/qapi-schema-test.out tweaks to doc comments wrap long lines Paolo Bonzini (3): qom-qobject: introduce object_property_{g,s}et_ptr cpu: implement get_crash_info through QOM properties vl: pass CPUState to qemu_system_guest_panicked include/qom/cpu.h | 1 - include/qom/qom-qobject.h | 68 +++++++++++- include/sysemu/sysemu.h | 2 +- kvm-all.c | 2 +- qom/cpu.c | 11 +- qom/qom-qobject.c | 52 ++++++++++ target/i386/cpu.c | 2 +- tests/Makefile.include | 2 +- tests/check-qom-proplist.c | 177 +++++++++++++++++++++++++++++++- tests/qapi-schema/qapi-schema-test.json | 8 ++ tests/qapi-schema/qapi-schema-test.out | 6 ++ vl.c | 13 ++- 12 files changed, 326 insertions(+), 18 deletions(-) -- 2.9.3 ^ permalink raw reply [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr 2017-02-22 18:04 [Qemu-devel] [PATCH v2 " Paolo Bonzini @ 2017-02-22 18:04 ` Paolo Bonzini 2017-02-22 23:34 ` Eric Blake ` (2 more replies) 0 siblings, 3 replies; 22+ messages in thread From: Paolo Bonzini @ 2017-02-22 18:04 UTC (permalink / raw) To: qemu-devel; +Cc: eblake, marcandre.lureau The functions simplify the handling of QOM properties whose type is a QAPI struct. They go through a QObject just like the other functions that access a QOM property through its C type. Like QAPI_CLONE, the functions are wrapped by macros that take a QAPI type name and use it to build the name of a visitor function. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- include/qom/qom-qobject.h | 68 +++++++++++- qom/qom-qobject.c | 52 ++++++++++ tests/Makefile.include | 2 +- tests/check-qom-proplist.c | 177 +++++++++++++++++++++++++++++++- tests/qapi-schema/qapi-schema-test.json | 8 ++ tests/qapi-schema/qapi-schema-test.out | 6 ++ 6 files changed, 309 insertions(+), 4 deletions(-) diff --git a/include/qom/qom-qobject.h b/include/qom/qom-qobject.h index 77cd717..fab9c4f 100644 --- a/include/qom/qom-qobject.h +++ b/include/qom/qom-qobject.h @@ -30,7 +30,7 @@ struct QObject *object_property_get_qobject(Object *obj, const char *name, /** * object_property_set_qobject: * @obj: the object - * @ret: The value that will be written to the property. + * @ret: The value that will be written to the property * @name: the name of the property * @errp: returns an error if this function fails * @@ -39,4 +39,70 @@ struct QObject *object_property_get_qobject(Object *obj, const char *name, void object_property_set_qobject(Object *obj, struct QObject *qobj, const char *name, struct Error **errp); +/** + * object_property_get_ptr: + * @obj: the object + * @name: the name of the property + * @visit_type: the visitor function for the returned object + * @errp: returns an error if this function fails + * + * Return: the value of an object's property, unmarshaled into a C object + * through a QAPI type visitor, or NULL if an error occurs. + */ +void *object_property_get_ptr(Object *obj, const char *name, + void (*visit_type)(Visitor *, const char *, + void **, Error **), + Error **errp); + +/** + * OBJECT_PROPERTY_GET_PTR: + * @obj: the object + * @name: the name of the property + * @type: the name of the C struct type that is returned + * @errp: returns an error if this function fails + * + * Return: the value of an object's property, unmarshaled into a C object + * through a QAPI type visitor, or NULL if an error occurs. + */ +#define OBJECT_PROPERTY_GET_PTR(obj, name, type, errp) \ + ((type *) \ + object_property_get_ptr(obj, name, \ + (void (*)(Visitor *, const char *, void**, \ + Error **))visit_type_ ## type, \ + errp)) + +/** + * object_property_set_ptr: + * @obj: the object + * @ptr: The C struct that will be written to the property + * @name: the name of the property + * @visit_type: the visitor function for @ptr's type + * @errp: returns an error if this function fails + * + * Sets an object's property to a C object's value, using a QAPI + * type visitor to marshal the C struct into the property value. + */ +void object_property_set_ptr(Object *obj, void *ptr, const char *name, + void (*visit_type)(Visitor *, const char *, + void **, Error **), + Error **errp); + +/** + * OBJECT_PROPERTY_SET_PTR: + * @obj: the object + * @ptr: The C struct that will be written to the property + * @name: the name of the property + * @type: the name of the C struct type pointed to by @ptr + * @errp: returns an error if this function fails + * + * Sets an object's property to a C object's value, using a QAPI + * type visitor to marshal the C struct into the property value. + */ +#define OBJECT_PROPERTY_SET_PTR(obj, ptr, name, type, errp) \ + object_property_set_ptr(obj, ptr + type_check(type, typeof(*ptr)), \ + name, \ + (void (*)(Visitor *, const char *, void**, \ + Error **))visit_type_ ## type, \ + errp) + #endif diff --git a/qom/qom-qobject.c b/qom/qom-qobject.c index 447e4a0..d4675be 100644 --- a/qom/qom-qobject.c +++ b/qom/qom-qobject.c @@ -44,3 +44,55 @@ QObject *object_property_get_qobject(Object *obj, const char *name, visit_free(v); return ret; } + +void object_property_set_ptr(Object *obj, void *ptr, const char *name, + void (*visit_type)(Visitor *, const char *, + void **, Error **), + Error **errp) +{ + Error *local_err = NULL; + QObject *ret = NULL; + Visitor *v; + v = qobject_output_visitor_new(&ret); + visit_type(v, name, &ptr, &local_err); + if (local_err) { + error_propagate(errp, local_err); + visit_free(v); + return; + } + visit_complete(v, &ret); + visit_free(v); + + /* Do not use object_property_set_qobject until we switch it + * to use qobject_input_visitor_new in strict mode. See the + * /qom/proplist/get-set-ptr/contravariant unit test. + */ + v = qobject_input_visitor_new(ret, true); + object_property_set(obj, v, name, errp); + visit_free(v); + qobject_decref(ret); +} + +void *object_property_get_ptr(Object *obj, const char *name, + void (*visit_type)(Visitor *, const char *, + void **, Error **), + Error **errp) +{ + QObject *ret; + Visitor *v; + void *ptr = NULL; + + ret = object_property_get_qobject(obj, name, errp); + if (!ret) { + return NULL; + } + + /* Do not enable strict mode to allow passing covariant + * data types. + */ + v = qobject_input_visitor_new(ret, false); + visit_type(v, name, &ptr, errp); + qobject_decref(ret); + visit_free(v); + return ptr; +} diff --git a/tests/Makefile.include b/tests/Makefile.include index e60bb6c..1a1b6e2 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -519,7 +519,7 @@ tests/check-qfloat$(EXESUF): tests/check-qfloat.o $(test-util-obj-y) tests/check-qnull$(EXESUF): tests/check-qnull.o $(test-util-obj-y) tests/check-qjson$(EXESUF): tests/check-qjson.o $(test-util-obj-y) tests/check-qom-interface$(EXESUF): tests/check-qom-interface.o $(test-qom-obj-y) -tests/check-qom-proplist$(EXESUF): tests/check-qom-proplist.o $(test-qom-obj-y) +tests/check-qom-proplist$(EXESUF): tests/check-qom-proplist.o $(test-qom-obj-y) $(test-qapi-obj-y) tests/test-char$(EXESUF): tests/test-char.o $(test-util-obj-y) $(qtest-obj-y) $(test-io-obj-y) $(chardev-obj-y) tests/test-coroutine$(EXESUF): tests/test-coroutine.o $(test-block-obj-y) diff --git a/tests/check-qom-proplist.c b/tests/check-qom-proplist.c index a16cefc..1bf0320 100644 --- a/tests/check-qom-proplist.c +++ b/tests/check-qom-proplist.c @@ -22,8 +22,11 @@ #include "qapi/error.h" #include "qom/object.h" +#include "qom/qom-qobject.h" #include "qemu/module.h" +#include "test-qapi-types.h" +#include "test-qapi-visit.h" #define TYPE_DUMMY "qemu-dummy" @@ -56,6 +59,8 @@ struct DummyObject { bool bv; DummyAnimal av; char *sv; + + UserDefOne *qv; }; struct DummyObjectClass { @@ -120,12 +125,42 @@ static char *dummy_get_sv(Object *obj, static void dummy_init(Object *obj) { + DummyObject *dobj = DUMMY_OBJECT(obj); + object_property_add_bool(obj, "bv", dummy_get_bv, dummy_set_bv, NULL); + dobj->qv = g_new0(UserDefOne, 1); + dobj->qv->string = g_strdup("dummy string"); +} + + +static void dummy_get_qv(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + DummyObject *dobj = DUMMY_OBJECT(obj); + + visit_type_UserDefOne(v, name, &dobj->qv, errp); } +static void dummy_set_qv(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + DummyObject *dobj = DUMMY_OBJECT(obj); + UserDefOne *qv = NULL; + Error *local_err = NULL; + + visit_type_UserDefOne(v, name, &qv, &local_err); + if (local_err) { + g_assert(qv == NULL); + error_propagate(errp, local_err); + return; + } + + qapi_free_UserDefOne(dobj->qv); + dobj->qv = qv; +} static void dummy_class_init(ObjectClass *cls, void *data) { @@ -143,6 +178,13 @@ static void dummy_class_init(ObjectClass *cls, void *data) dummy_get_av, dummy_set_av, NULL); + object_class_property_add(cls, "qv", + "UserDefOne", + dummy_get_qv, + dummy_set_qv, + NULL, + NULL, + NULL); } @@ -151,9 +193,9 @@ static void dummy_finalize(Object *obj) DummyObject *dobj = DUMMY_OBJECT(obj); g_free(dobj->sv); + qapi_free_UserDefOne(dobj->qv); } - static const TypeInfo dummy_info = { .name = TYPE_DUMMY, .parent = TYPE_OBJECT, @@ -473,7 +515,8 @@ static void test_dummy_iterator(void) ObjectProperty *prop; ObjectPropertyIterator iter; - bool seenbv = false, seensv = false, seenav = false, seentype; + bool seenbv = false, seensv = false, seenav = false; + bool seenqv = false, seentype = false; object_property_iter_init(&iter, OBJECT(dobj)); while ((prop = object_property_iter_next(&iter))) { @@ -483,6 +526,8 @@ static void test_dummy_iterator(void) seensv = true; } else if (g_str_equal(prop->name, "av")) { seenav = true; + } else if (g_str_equal(prop->name, "qv")) { + seenqv = true; } else if (g_str_equal(prop->name, "type")) { /* This prop comes from the base Object class */ seentype = true; @@ -494,6 +539,7 @@ static void test_dummy_iterator(void) g_assert(seenbv); g_assert(seenav); g_assert(seensv); + g_assert(seenqv); g_assert(seentype); object_unparent(OBJECT(dobj)); @@ -513,6 +559,129 @@ static void test_dummy_delchild(void) object_unparent(OBJECT(dev)); } +static void test_dummy_get_set_ptr_struct(void) +{ + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); + Error *local_err = NULL; + const char *s = "my other dummy string"; + UserDefOne *ret; + UserDefOne val; + + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", + UserDefOne, &local_err); + g_assert(!local_err); + + g_assert_cmpint(ret->integer, ==, 0); + g_assert_cmpstr(ret->string, ==, "dummy string"); + g_assert(!ret->has_enum1); + qapi_free_UserDefOne(ret); + + val.integer = 42; + val.string = g_strdup(s); + val.has_enum1 = true; + val.enum1 = ENUM_ONE_VALUE1; + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", + UserDefOne, &local_err); + g_assert(!local_err); + + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", + UserDefOne, &local_err); + g_assert(!local_err); + + g_assert_cmpint(ret->integer, ==, val.integer); + g_assert_cmpstr(ret->string, ==, val.string); + g_assert(ret->has_enum1); + g_assert_cmpint(ret->enum1, ==, val.enum1); + g_free(val.string); + qapi_free_UserDefOne(ret); +} + +static void test_dummy_get_set_ptr_contravariant(void) +{ + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); + Error *local_err = NULL; + UserDefOneMore *ret; + UserDefOneMore val; + + /* You cannot retrieve a contravariant (subclass) type... */ + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", + UserDefOneMore, &local_err); + error_free_or_abort(&local_err); + g_assert(!ret); + + /* And you cannot set one either. */ + val.integer = 42; + val.string = g_strdup("unused"); + val.has_enum1 = false; + val.boolean = false; + + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", + UserDefOneMore, &local_err); + g_assert(local_err); +} + +static void test_dummy_get_set_ptr_covariant(void) +{ + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); + Error *local_err = NULL; + UserDefZero *ret; + UserDefZero val; + + /* You can retrieve a covariant (superclass) type... */ + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", + UserDefZero, &local_err); + g_assert(!local_err); + + g_assert_cmpint(ret->integer, ==, 0); + qapi_free_UserDefZero(ret); + + /* But you cannot set one. */ + val.integer = 42; + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", + UserDefZero, &local_err); + error_free_or_abort(&local_err); + + /* Test that the property has not been modified at all */ + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", + UserDefZero, &local_err); + g_assert(!local_err); + + g_assert_cmpint(ret->integer, ==, 0); + qapi_free_UserDefZero(ret); +} + +static void test_dummy_get_set_ptr_error(void) +{ + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); + Error *local_err = NULL; + const char *s = "my other dummy string"; + UserDefOne *ret; + UserDefOne val; + + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "blah", + UserDefOne, &local_err); + error_free_or_abort(&local_err); + g_assert(!ret); + + val.integer = 42; + val.string = g_strdup(s); + val.has_enum1 = true; + val.enum1 = 100; + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", + UserDefOne, &local_err); + error_free_or_abort(&local_err); + + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", + UserDefOne, &local_err); + g_assert(!local_err); + + /* Test that the property has not been modified at all */ + g_assert_cmpint(ret->integer, ==, 0); + g_assert_cmpstr(ret->string, ==, "dummy string"); + g_assert(!ret->has_enum1); + qapi_free_UserDefOne(ret); +} + int main(int argc, char **argv) { g_test_init(&argc, &argv, NULL); @@ -530,5 +699,9 @@ int main(int argc, char **argv) g_test_add_func("/qom/proplist/iterator", test_dummy_iterator); g_test_add_func("/qom/proplist/delchild", test_dummy_delchild); + g_test_add_func("/qom/proplist/get-set-ptr/struct", test_dummy_get_set_ptr_struct); + g_test_add_func("/qom/proplist/get-set-ptr/error", test_dummy_get_set_ptr_error); + g_test_add_func("/qom/proplist/get-set-ptr/covariant", test_dummy_get_set_ptr_covariant); + g_test_add_func("/qom/proplist/get-set-ptr/contravariant", test_dummy_get_set_ptr_contravariant); return g_test_run(); } diff --git a/tests/qapi-schema/qapi-schema-test.json b/tests/qapi-schema/qapi-schema-test.json index f4d8cc4..4e3f6ff 100644 --- a/tests/qapi-schema/qapi-schema-test.json +++ b/tests/qapi-schema/qapi-schema-test.json @@ -91,6 +91,14 @@ '*enum1': 'EnumOne' } } # intentional forward reference ## +# @UserDefOneMore: +# for testing nested structs +## +{ 'struct': 'UserDefOneMore', + 'base': 'UserDefOne', + 'data': { 'boolean': 'bool' } } + +## # @EnumOne: ## { 'enum': 'EnumOne', diff --git a/tests/qapi-schema/qapi-schema-test.out b/tests/qapi-schema/qapi-schema-test.out index bc8d496..d3a2990 100644 --- a/tests/qapi-schema/qapi-schema-test.out +++ b/tests/qapi-schema/qapi-schema-test.out @@ -107,6 +107,9 @@ object UserDefOne base UserDefZero member string: str optional=False member enum1: EnumOne optional=True +object UserDefOneMore + base UserDefOne + member boolean: bool optional=False object UserDefOptions member i64: intList optional=True member u64: uint64List optional=True @@ -283,6 +286,9 @@ for testing override of default naming heuristic doc symbol=UserDefOne expr=('struct', 'UserDefOne') body= for testing nested structs +doc symbol=UserDefOneMore expr=('struct', 'UserDefOneMore') + body= +for testing nested structs doc symbol=EnumOne expr=('enum', 'EnumOne') doc symbol=UserDefZero expr=('struct', 'UserDefZero') doc symbol=UserDefTwoDictDict expr=('struct', 'UserDefTwoDictDict') -- 2.9.3 ^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr 2017-02-22 18:04 ` [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr Paolo Bonzini @ 2017-02-22 23:34 ` Eric Blake 2017-02-23 8:33 ` Marc-André Lureau 2017-02-24 14:54 ` Markus Armbruster 2 siblings, 0 replies; 22+ messages in thread From: Eric Blake @ 2017-02-22 23:34 UTC (permalink / raw) To: Paolo Bonzini, qemu-devel; +Cc: marcandre.lureau [-- Attachment #1: Type: text/plain, Size: 1032 bytes --] On 02/22/2017 12:04 PM, Paolo Bonzini wrote: > The functions simplify the handling of QOM properties whose type > is a QAPI struct. They go through a QObject just like the other > functions that access a QOM property through its C type. > > Like QAPI_CLONE, the functions are wrapped by macros that take a > QAPI type name and use it to build the name of a visitor function. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > include/qom/qom-qobject.h | 68 +++++++++++- > qom/qom-qobject.c | 52 ++++++++++ > tests/Makefile.include | 2 +- > tests/check-qom-proplist.c | 177 +++++++++++++++++++++++++++++++- > tests/qapi-schema/qapi-schema-test.json | 8 ++ > tests/qapi-schema/qapi-schema-test.out | 6 ++ > 6 files changed, 309 insertions(+), 4 deletions(-) > Reviewed-by: Eric Blake <eblake@redhat.com> -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 604 bytes --] ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr 2017-02-22 18:04 ` [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr Paolo Bonzini 2017-02-22 23:34 ` Eric Blake @ 2017-02-23 8:33 ` Marc-André Lureau 2017-02-24 14:54 ` Markus Armbruster 2 siblings, 0 replies; 22+ messages in thread From: Marc-André Lureau @ 2017-02-23 8:33 UTC (permalink / raw) To: Paolo Bonzini, qemu-devel Hi On Wed, Feb 22, 2017 at 10:07 PM Paolo Bonzini <pbonzini@redhat.com> wrote: > The functions simplify the handling of QOM properties whose type > is a QAPI struct. They go through a QObject just like the other > functions that access a QOM property through its C type. > > Like QAPI_CLONE, the functions are wrapped by macros that take a > QAPI type name and use it to build the name of a visitor function. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Please fix the tests leaks: diff --git a/tests/check-qom-proplist.c b/tests/check-qom-proplist.c index 1bf0320854..379d3abe6b 100644 --- a/tests/check-qom-proplist.c +++ b/tests/check-qom-proplist.c @@ -594,6 +594,7 @@ static void test_dummy_get_set_ptr_struct(void) g_assert_cmpint(ret->enum1, ==, val.enum1); g_free(val.string); qapi_free_UserDefOne(ret); + object_unref(OBJECT(dobj)); } static void test_dummy_get_set_ptr_contravariant(void) @@ -617,7 +618,9 @@ static void test_dummy_get_set_ptr_contravariant(void) OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", UserDefOneMore, &local_err); - g_assert(local_err); + error_free_or_abort(&local_err); + object_unref(OBJECT(dobj)); + g_free(val.string); } static void test_dummy_get_set_ptr_covariant(void) @@ -648,6 +651,7 @@ static void test_dummy_get_set_ptr_covariant(void) g_assert_cmpint(ret->integer, ==, 0); qapi_free_UserDefZero(ret); + object_unref(OBJECT(dobj)); } static void test_dummy_get_set_ptr_error(void) @@ -680,6 +684,8 @@ static void test_dummy_get_set_ptr_error(void) g_assert_cmpstr(ret->string, ==, "dummy string"); g_assert(!ret->has_enum1); qapi_free_UserDefOne(ret); + object_unref(OBJECT(dobj)); + g_free(val.string); } int main(int argc, char **argv) > --- > include/qom/qom-qobject.h | 68 +++++++++++- > qom/qom-qobject.c | 52 ++++++++++ > tests/Makefile.include | 2 +- > tests/check-qom-proplist.c | 177 > +++++++++++++++++++++++++++++++- > tests/qapi-schema/qapi-schema-test.json | 8 ++ > tests/qapi-schema/qapi-schema-test.out | 6 ++ > 6 files changed, 309 insertions(+), 4 deletions(-) > > diff --git a/include/qom/qom-qobject.h b/include/qom/qom-qobject.h > index 77cd717..fab9c4f 100644 > --- a/include/qom/qom-qobject.h > +++ b/include/qom/qom-qobject.h > @@ -30,7 +30,7 @@ struct QObject *object_property_get_qobject(Object *obj, > const char *name, > /** > * object_property_set_qobject: > * @obj: the object > - * @ret: The value that will be written to the property. > + * @ret: The value that will be written to the property > * @name: the name of the property > * @errp: returns an error if this function fails > * > @@ -39,4 +39,70 @@ struct QObject *object_property_get_qobject(Object > *obj, const char *name, > void object_property_set_qobject(Object *obj, struct QObject *qobj, > const char *name, struct Error **errp); > > +/** > + * object_property_get_ptr: > + * @obj: the object > + * @name: the name of the property > + * @visit_type: the visitor function for the returned object > + * @errp: returns an error if this function fails > + * > + * Return: the value of an object's property, unmarshaled into a C object > + * through a QAPI type visitor, or NULL if an error occurs. > + */ > +void *object_property_get_ptr(Object *obj, const char *name, > + void (*visit_type)(Visitor *, const char *, > + void **, Error **), > + Error **errp); > + > +/** > + * OBJECT_PROPERTY_GET_PTR: > + * @obj: the object > + * @name: the name of the property > + * @type: the name of the C struct type that is returned > + * @errp: returns an error if this function fails > + * > + * Return: the value of an object's property, unmarshaled into a C object > + * through a QAPI type visitor, or NULL if an error occurs. > + */ > +#define OBJECT_PROPERTY_GET_PTR(obj, name, type, errp) > \ > + ((type *) > \ > + object_property_get_ptr(obj, name, > \ > + (void (*)(Visitor *, const char *, void**, > \ > + Error **))visit_type_ ## type, > \ > + errp)) > + > +/** > + * object_property_set_ptr: > + * @obj: the object > + * @ptr: The C struct that will be written to the property > + * @name: the name of the property > + * @visit_type: the visitor function for @ptr's type > + * @errp: returns an error if this function fails > + * > + * Sets an object's property to a C object's value, using a QAPI > + * type visitor to marshal the C struct into the property value. > + */ > +void object_property_set_ptr(Object *obj, void *ptr, const char *name, > + void (*visit_type)(Visitor *, const char *, > + void **, Error **), > + Error **errp); > + > +/** > + * OBJECT_PROPERTY_SET_PTR: > + * @obj: the object > + * @ptr: The C struct that will be written to the property > + * @name: the name of the property > + * @type: the name of the C struct type pointed to by @ptr > + * @errp: returns an error if this function fails > + * > + * Sets an object's property to a C object's value, using a QAPI > + * type visitor to marshal the C struct into the property value. > + */ > +#define OBJECT_PROPERTY_SET_PTR(obj, ptr, name, type, errp) > \ > + object_property_set_ptr(obj, ptr + type_check(type, typeof(*ptr)), > \ > + name, > \ > + (void (*)(Visitor *, const char *, void**, > \ > + Error **))visit_type_ ## type, > \ > + errp) > + > #endif > diff --git a/qom/qom-qobject.c b/qom/qom-qobject.c > index 447e4a0..d4675be 100644 > --- a/qom/qom-qobject.c > +++ b/qom/qom-qobject.c > @@ -44,3 +44,55 @@ QObject *object_property_get_qobject(Object *obj, const > char *name, > visit_free(v); > return ret; > } > + > +void object_property_set_ptr(Object *obj, void *ptr, const char *name, > + void (*visit_type)(Visitor *, const char *, > + void **, Error **), > + Error **errp) > +{ > + Error *local_err = NULL; > + QObject *ret = NULL; > + Visitor *v; > + v = qobject_output_visitor_new(&ret); > + visit_type(v, name, &ptr, &local_err); > + if (local_err) { > + error_propagate(errp, local_err); > + visit_free(v); > + return; > + } > + visit_complete(v, &ret); > + visit_free(v); > + > + /* Do not use object_property_set_qobject until we switch it > + * to use qobject_input_visitor_new in strict mode. See the > + * /qom/proplist/get-set-ptr/contravariant unit test. > + */ > + v = qobject_input_visitor_new(ret, true); > + object_property_set(obj, v, name, errp); > + visit_free(v); > + qobject_decref(ret); > +} > + > +void *object_property_get_ptr(Object *obj, const char *name, > + void (*visit_type)(Visitor *, const char *, > + void **, Error **), > + Error **errp) > +{ > + QObject *ret; > + Visitor *v; > + void *ptr = NULL; > + > + ret = object_property_get_qobject(obj, name, errp); > + if (!ret) { > + return NULL; > + } > + > + /* Do not enable strict mode to allow passing covariant > + * data types. > + */ > + v = qobject_input_visitor_new(ret, false); > + visit_type(v, name, &ptr, errp); > + qobject_decref(ret); > + visit_free(v); > + return ptr; > +} > diff --git a/tests/Makefile.include b/tests/Makefile.include > index e60bb6c..1a1b6e2 100644 > --- a/tests/Makefile.include > +++ b/tests/Makefile.include > @@ -519,7 +519,7 @@ tests/check-qfloat$(EXESUF): tests/check-qfloat.o > $(test-util-obj-y) > tests/check-qnull$(EXESUF): tests/check-qnull.o $(test-util-obj-y) > tests/check-qjson$(EXESUF): tests/check-qjson.o $(test-util-obj-y) > tests/check-qom-interface$(EXESUF): tests/check-qom-interface.o > $(test-qom-obj-y) > -tests/check-qom-proplist$(EXESUF): tests/check-qom-proplist.o > $(test-qom-obj-y) > +tests/check-qom-proplist$(EXESUF): tests/check-qom-proplist.o > $(test-qom-obj-y) $(test-qapi-obj-y) > > tests/test-char$(EXESUF): tests/test-char.o $(test-util-obj-y) > $(qtest-obj-y) $(test-io-obj-y) $(chardev-obj-y) > tests/test-coroutine$(EXESUF): tests/test-coroutine.o $(test-block-obj-y) > diff --git a/tests/check-qom-proplist.c b/tests/check-qom-proplist.c > index a16cefc..1bf0320 100644 > --- a/tests/check-qom-proplist.c > +++ b/tests/check-qom-proplist.c > @@ -22,8 +22,11 @@ > > #include "qapi/error.h" > #include "qom/object.h" > +#include "qom/qom-qobject.h" > #include "qemu/module.h" > > +#include "test-qapi-types.h" > +#include "test-qapi-visit.h" > > #define TYPE_DUMMY "qemu-dummy" > > @@ -56,6 +59,8 @@ struct DummyObject { > bool bv; > DummyAnimal av; > char *sv; > + > + UserDefOne *qv; > }; > > struct DummyObjectClass { > @@ -120,12 +125,42 @@ static char *dummy_get_sv(Object *obj, > > static void dummy_init(Object *obj) > { > + DummyObject *dobj = DUMMY_OBJECT(obj); > + > object_property_add_bool(obj, "bv", > dummy_get_bv, > dummy_set_bv, > NULL); > + dobj->qv = g_new0(UserDefOne, 1); > + dobj->qv->string = g_strdup("dummy string"); > +} > + > + > +static void dummy_get_qv(Object *obj, Visitor *v, const char *name, > + void *opaque, Error **errp) > +{ > + DummyObject *dobj = DUMMY_OBJECT(obj); > + > + visit_type_UserDefOne(v, name, &dobj->qv, errp); > } > > +static void dummy_set_qv(Object *obj, Visitor *v, const char *name, > + void *opaque, Error **errp) > +{ > + DummyObject *dobj = DUMMY_OBJECT(obj); > + UserDefOne *qv = NULL; > + Error *local_err = NULL; > + > + visit_type_UserDefOne(v, name, &qv, &local_err); > + if (local_err) { > + g_assert(qv == NULL); > + error_propagate(errp, local_err); > + return; > + } > + > + qapi_free_UserDefOne(dobj->qv); > + dobj->qv = qv; > +} > > static void dummy_class_init(ObjectClass *cls, void *data) > { > @@ -143,6 +178,13 @@ static void dummy_class_init(ObjectClass *cls, void > *data) > dummy_get_av, > dummy_set_av, > NULL); > + object_class_property_add(cls, "qv", > + "UserDefOne", > + dummy_get_qv, > + dummy_set_qv, > + NULL, > + NULL, > + NULL); > } > > > @@ -151,9 +193,9 @@ static void dummy_finalize(Object *obj) > DummyObject *dobj = DUMMY_OBJECT(obj); > > g_free(dobj->sv); > + qapi_free_UserDefOne(dobj->qv); > } > > - > static const TypeInfo dummy_info = { > .name = TYPE_DUMMY, > .parent = TYPE_OBJECT, > @@ -473,7 +515,8 @@ static void test_dummy_iterator(void) > > ObjectProperty *prop; > ObjectPropertyIterator iter; > - bool seenbv = false, seensv = false, seenav = false, seentype; > + bool seenbv = false, seensv = false, seenav = false; > + bool seenqv = false, seentype = false; > > object_property_iter_init(&iter, OBJECT(dobj)); > while ((prop = object_property_iter_next(&iter))) { > @@ -483,6 +526,8 @@ static void test_dummy_iterator(void) > seensv = true; > } else if (g_str_equal(prop->name, "av")) { > seenav = true; > + } else if (g_str_equal(prop->name, "qv")) { > + seenqv = true; > } else if (g_str_equal(prop->name, "type")) { > /* This prop comes from the base Object class */ > seentype = true; > @@ -494,6 +539,7 @@ static void test_dummy_iterator(void) > g_assert(seenbv); > g_assert(seenav); > g_assert(seensv); > + g_assert(seenqv); > g_assert(seentype); > > object_unparent(OBJECT(dobj)); > @@ -513,6 +559,129 @@ static void test_dummy_delchild(void) > object_unparent(OBJECT(dev)); > } > > +static void test_dummy_get_set_ptr_struct(void) > +{ > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > + Error *local_err = NULL; > + const char *s = "my other dummy string"; > + UserDefOne *ret; > + UserDefOne val; > + > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefOne, &local_err); > + g_assert(!local_err); > + > + g_assert_cmpint(ret->integer, ==, 0); > + g_assert_cmpstr(ret->string, ==, "dummy string"); > + g_assert(!ret->has_enum1); > + qapi_free_UserDefOne(ret); > + > + val.integer = 42; > + val.string = g_strdup(s); > + val.has_enum1 = true; > + val.enum1 = ENUM_ONE_VALUE1; > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > + UserDefOne, &local_err); > + g_assert(!local_err); > + > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefOne, &local_err); > + g_assert(!local_err); > + > + g_assert_cmpint(ret->integer, ==, val.integer); > + g_assert_cmpstr(ret->string, ==, val.string); > + g_assert(ret->has_enum1); > + g_assert_cmpint(ret->enum1, ==, val.enum1); > + g_free(val.string); > + qapi_free_UserDefOne(ret); > +} > + > +static void test_dummy_get_set_ptr_contravariant(void) > +{ > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > + Error *local_err = NULL; > + UserDefOneMore *ret; > + UserDefOneMore val; > + > + /* You cannot retrieve a contravariant (subclass) type... */ > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefOneMore, &local_err); > + error_free_or_abort(&local_err); > + g_assert(!ret); > + > + /* And you cannot set one either. */ > + val.integer = 42; > + val.string = g_strdup("unused"); > + val.has_enum1 = false; > + val.boolean = false; > + > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > + UserDefOneMore, &local_err); > + g_assert(local_err); > +} > + > +static void test_dummy_get_set_ptr_covariant(void) > +{ > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > + Error *local_err = NULL; > + UserDefZero *ret; > + UserDefZero val; > + > + /* You can retrieve a covariant (superclass) type... */ > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefZero, &local_err); > + g_assert(!local_err); > + > + g_assert_cmpint(ret->integer, ==, 0); > + qapi_free_UserDefZero(ret); > + > + /* But you cannot set one. */ > + val.integer = 42; > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > + UserDefZero, &local_err); > + error_free_or_abort(&local_err); > + > + /* Test that the property has not been modified at all */ > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefZero, &local_err); > + g_assert(!local_err); > + > + g_assert_cmpint(ret->integer, ==, 0); > + qapi_free_UserDefZero(ret); > +} > + > +static void test_dummy_get_set_ptr_error(void) > +{ > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > + Error *local_err = NULL; > + const char *s = "my other dummy string"; > + UserDefOne *ret; > + UserDefOne val; > + > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "blah", > + UserDefOne, &local_err); > + error_free_or_abort(&local_err); > + g_assert(!ret); > + > + val.integer = 42; > + val.string = g_strdup(s); > + val.has_enum1 = true; > + val.enum1 = 100; > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > + UserDefOne, &local_err); > + error_free_or_abort(&local_err); > + > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefOne, &local_err); > + g_assert(!local_err); > + > + /* Test that the property has not been modified at all */ > + g_assert_cmpint(ret->integer, ==, 0); > + g_assert_cmpstr(ret->string, ==, "dummy string"); > + g_assert(!ret->has_enum1); > + qapi_free_UserDefOne(ret); > +} > + > int main(int argc, char **argv) > { > g_test_init(&argc, &argv, NULL); > @@ -530,5 +699,9 @@ int main(int argc, char **argv) > g_test_add_func("/qom/proplist/iterator", test_dummy_iterator); > g_test_add_func("/qom/proplist/delchild", test_dummy_delchild); > > + g_test_add_func("/qom/proplist/get-set-ptr/struct", > test_dummy_get_set_ptr_struct); > + g_test_add_func("/qom/proplist/get-set-ptr/error", > test_dummy_get_set_ptr_error); > + g_test_add_func("/qom/proplist/get-set-ptr/covariant", > test_dummy_get_set_ptr_covariant); > + g_test_add_func("/qom/proplist/get-set-ptr/contravariant", > test_dummy_get_set_ptr_contravariant); > return g_test_run(); > } > diff --git a/tests/qapi-schema/qapi-schema-test.json > b/tests/qapi-schema/qapi-schema-test.json > index f4d8cc4..4e3f6ff 100644 > --- a/tests/qapi-schema/qapi-schema-test.json > +++ b/tests/qapi-schema/qapi-schema-test.json > @@ -91,6 +91,14 @@ > '*enum1': 'EnumOne' } } # intentional forward reference > > ## > +# @UserDefOneMore: > +# for testing nested structs > +## > +{ 'struct': 'UserDefOneMore', > + 'base': 'UserDefOne', > + 'data': { 'boolean': 'bool' } } > + > +## > # @EnumOne: > ## > { 'enum': 'EnumOne', > diff --git a/tests/qapi-schema/qapi-schema-test.out > b/tests/qapi-schema/qapi-schema-test.out > index bc8d496..d3a2990 100644 > --- a/tests/qapi-schema/qapi-schema-test.out > +++ b/tests/qapi-schema/qapi-schema-test.out > @@ -107,6 +107,9 @@ object UserDefOne > base UserDefZero > member string: str optional=False > member enum1: EnumOne optional=True > +object UserDefOneMore > + base UserDefOne > + member boolean: bool optional=False > object UserDefOptions > member i64: intList optional=True > member u64: uint64List optional=True > @@ -283,6 +286,9 @@ for testing override of default naming heuristic > doc symbol=UserDefOne expr=('struct', 'UserDefOne') > body= > for testing nested structs > +doc symbol=UserDefOneMore expr=('struct', 'UserDefOneMore') > + body= > +for testing nested structs > doc symbol=EnumOne expr=('enum', 'EnumOne') > doc symbol=UserDefZero expr=('struct', 'UserDefZero') > doc symbol=UserDefTwoDictDict expr=('struct', 'UserDefTwoDictDict') > -- > 2.9.3 > > > > -- Marc-André Lureau ^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr 2017-02-22 18:04 ` [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr Paolo Bonzini 2017-02-22 23:34 ` Eric Blake 2017-02-23 8:33 ` Marc-André Lureau @ 2017-02-24 14:54 ` Markus Armbruster 2017-02-24 15:29 ` Paolo Bonzini 2 siblings, 1 reply; 22+ messages in thread From: Markus Armbruster @ 2017-02-24 14:54 UTC (permalink / raw) To: Paolo Bonzini; +Cc: qemu-devel, marcandre.lureau Paolo Bonzini <pbonzini@redhat.com> writes: > The functions simplify the handling of QOM properties whose type > is a QAPI struct. They go through a QObject just like the other > functions that access a QOM property through its C type. > > Like QAPI_CLONE, the functions are wrapped by macros that take a > QAPI type name and use it to build the name of a visitor function. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > include/qom/qom-qobject.h | 68 +++++++++++- > qom/qom-qobject.c | 52 ++++++++++ > tests/Makefile.include | 2 +- > tests/check-qom-proplist.c | 177 +++++++++++++++++++++++++++++++- > tests/qapi-schema/qapi-schema-test.json | 8 ++ > tests/qapi-schema/qapi-schema-test.out | 6 ++ > 6 files changed, 309 insertions(+), 4 deletions(-) > > diff --git a/include/qom/qom-qobject.h b/include/qom/qom-qobject.h > index 77cd717..fab9c4f 100644 > --- a/include/qom/qom-qobject.h > +++ b/include/qom/qom-qobject.h > @@ -30,7 +30,7 @@ struct QObject *object_property_get_qobject(Object *obj, const char *name, > /** > * object_property_set_qobject: > * @obj: the object > - * @ret: The value that will be written to the property. > + * @ret: The value that will be written to the property > * @name: the name of the property > * @errp: returns an error if this function fails > * > @@ -39,4 +39,70 @@ struct QObject *object_property_get_qobject(Object *obj, const char *name, > void object_property_set_qobject(Object *obj, struct QObject *qobj, > const char *name, struct Error **errp); > > +/** > + * object_property_get_ptr: > + * @obj: the object > + * @name: the name of the property > + * @visit_type: the visitor function for the returned object > + * @errp: returns an error if this function fails > + * > + * Return: the value of an object's property, unmarshaled into a C object > + * through a QAPI type visitor, or NULL if an error occurs. > + */ > +void *object_property_get_ptr(Object *obj, const char *name, > + void (*visit_type)(Visitor *, const char *, > + void **, Error **), > + Error **errp); > + > +/** > + * OBJECT_PROPERTY_GET_PTR: > + * @obj: the object > + * @name: the name of the property > + * @type: the name of the C struct type that is returned > + * @errp: returns an error if this function fails > + * > + * Return: the value of an object's property, unmarshaled into a C object > + * through a QAPI type visitor, or NULL if an error occurs. > + */ > +#define OBJECT_PROPERTY_GET_PTR(obj, name, type, errp) \ > + ((type *) \ > + object_property_get_ptr(obj, name, \ > + (void (*)(Visitor *, const char *, void**, \ > + Error **))visit_type_ ## type, \ > + errp)) > + > +/** > + * object_property_set_ptr: > + * @obj: the object > + * @ptr: The C struct that will be written to the property > + * @name: the name of the property > + * @visit_type: the visitor function for @ptr's type > + * @errp: returns an error if this function fails > + * > + * Sets an object's property to a C object's value, using a QAPI > + * type visitor to marshal the C struct into the property value. > + */ > +void object_property_set_ptr(Object *obj, void *ptr, const char *name, > + void (*visit_type)(Visitor *, const char *, > + void **, Error **), > + Error **errp); > + > +/** > + * OBJECT_PROPERTY_SET_PTR: > + * @obj: the object > + * @ptr: The C struct that will be written to the property > + * @name: the name of the property > + * @type: the name of the C struct type pointed to by @ptr > + * @errp: returns an error if this function fails > + * > + * Sets an object's property to a C object's value, using a QAPI > + * type visitor to marshal the C struct into the property value. > + */ > +#define OBJECT_PROPERTY_SET_PTR(obj, ptr, name, type, errp) \ > + object_property_set_ptr(obj, ptr + type_check(type, typeof(*ptr)), \ > + name, \ > + (void (*)(Visitor *, const char *, void**, \ > + Error **))visit_type_ ## type, \ > + errp) Same function type punning as we use for QAPI clone. I don't have better ideas. > + > #endif > diff --git a/qom/qom-qobject.c b/qom/qom-qobject.c > index 447e4a0..d4675be 100644 > --- a/qom/qom-qobject.c > +++ b/qom/qom-qobject.c > @@ -44,3 +44,55 @@ QObject *object_property_get_qobject(Object *obj, const char *name, > visit_free(v); > return ret; > } > + > +void object_property_set_ptr(Object *obj, void *ptr, const char *name, > + void (*visit_type)(Visitor *, const char *, > + void **, Error **), > + Error **errp) > +{ > + Error *local_err = NULL; > + QObject *ret = NULL; > + Visitor *v; > + v = qobject_output_visitor_new(&ret); > + visit_type(v, name, &ptr, &local_err); > + if (local_err) { > + error_propagate(errp, local_err); > + visit_free(v); > + return; > + } > + visit_complete(v, &ret); > + visit_free(v); > + > + /* Do not use object_property_set_qobject until we switch it > + * to use qobject_input_visitor_new in strict mode. See the > + * /qom/proplist/get-set-ptr/contravariant unit test. > + */ So no conflict with my "[PATCH 15/21] qom: Make object_property_set_qobject()'s input visitor strict". > + v = qobject_input_visitor_new(ret, true); > + object_property_set(obj, v, name, errp); > + visit_free(v); > + qobject_decref(ret); > +} > + > +void *object_property_get_ptr(Object *obj, const char *name, > + void (*visit_type)(Visitor *, const char *, > + void **, Error **), > + Error **errp) > +{ > + QObject *ret; > + Visitor *v; > + void *ptr = NULL; > + > + ret = object_property_get_qobject(obj, name, errp); > + if (!ret) { > + return NULL; > + } > + > + /* Do not enable strict mode to allow passing covariant > + * data types. > + */ > + v = qobject_input_visitor_new(ret, false); Hmm, the function contract only says "unmarshaled into a C object through a QAPI type visitor": /** * object_property_get_ptr: * @obj: the object * @name: the name of the property * @visit_type: the visitor function for the returned object * @errp: returns an error if this function fails * * Return: the value of an object's property, unmarshaled into a C object * through a QAPI type visitor, or NULL if an error occurs. */ No word about covariant / contravariant. Should it be a bit more verbose? > + visit_type(v, name, &ptr, errp); > + qobject_decref(ret); > + visit_free(v); > + return ptr; > +} Going through QObject gets you duck typing. More on that below. > diff --git a/tests/Makefile.include b/tests/Makefile.include > index e60bb6c..1a1b6e2 100644 > --- a/tests/Makefile.include > +++ b/tests/Makefile.include > @@ -519,7 +519,7 @@ tests/check-qfloat$(EXESUF): tests/check-qfloat.o $(test-util-obj-y) > tests/check-qnull$(EXESUF): tests/check-qnull.o $(test-util-obj-y) > tests/check-qjson$(EXESUF): tests/check-qjson.o $(test-util-obj-y) > tests/check-qom-interface$(EXESUF): tests/check-qom-interface.o $(test-qom-obj-y) > -tests/check-qom-proplist$(EXESUF): tests/check-qom-proplist.o $(test-qom-obj-y) > +tests/check-qom-proplist$(EXESUF): tests/check-qom-proplist.o $(test-qom-obj-y) $(test-qapi-obj-y) > > tests/test-char$(EXESUF): tests/test-char.o $(test-util-obj-y) $(qtest-obj-y) $(test-io-obj-y) $(chardev-obj-y) > tests/test-coroutine$(EXESUF): tests/test-coroutine.o $(test-block-obj-y) > diff --git a/tests/check-qom-proplist.c b/tests/check-qom-proplist.c > index a16cefc..1bf0320 100644 > --- a/tests/check-qom-proplist.c > +++ b/tests/check-qom-proplist.c > @@ -22,8 +22,11 @@ > > #include "qapi/error.h" > #include "qom/object.h" > +#include "qom/qom-qobject.h" > #include "qemu/module.h" > > +#include "test-qapi-types.h" > +#include "test-qapi-visit.h" > > #define TYPE_DUMMY "qemu-dummy" > > @@ -56,6 +59,8 @@ struct DummyObject { > bool bv; > DummyAnimal av; > char *sv; > + > + UserDefOne *qv; > }; > > struct DummyObjectClass { > @@ -120,12 +125,42 @@ static char *dummy_get_sv(Object *obj, > > static void dummy_init(Object *obj) > { > + DummyObject *dobj = DUMMY_OBJECT(obj); > + > object_property_add_bool(obj, "bv", > dummy_get_bv, > dummy_set_bv, > NULL); > + dobj->qv = g_new0(UserDefOne, 1); > + dobj->qv->string = g_strdup("dummy string"); > +} > + > + > +static void dummy_get_qv(Object *obj, Visitor *v, const char *name, > + void *opaque, Error **errp) > +{ > + DummyObject *dobj = DUMMY_OBJECT(obj); > + > + visit_type_UserDefOne(v, name, &dobj->qv, errp); > } > > +static void dummy_set_qv(Object *obj, Visitor *v, const char *name, > + void *opaque, Error **errp) > +{ > + DummyObject *dobj = DUMMY_OBJECT(obj); > + UserDefOne *qv = NULL; > + Error *local_err = NULL; > + > + visit_type_UserDefOne(v, name, &qv, &local_err); > + if (local_err) { > + g_assert(qv == NULL); > + error_propagate(errp, local_err); > + return; > + } > + > + qapi_free_UserDefOne(dobj->qv); > + dobj->qv = qv; > +} > > static void dummy_class_init(ObjectClass *cls, void *data) > { > @@ -143,6 +178,13 @@ static void dummy_class_init(ObjectClass *cls, void *data) > dummy_get_av, > dummy_set_av, > NULL); > + object_class_property_add(cls, "qv", > + "UserDefOne", > + dummy_get_qv, > + dummy_set_qv, > + NULL, > + NULL, > + NULL); > } > > > @@ -151,9 +193,9 @@ static void dummy_finalize(Object *obj) > DummyObject *dobj = DUMMY_OBJECT(obj); > > g_free(dobj->sv); > + qapi_free_UserDefOne(dobj->qv); > } > > - > static const TypeInfo dummy_info = { > .name = TYPE_DUMMY, > .parent = TYPE_OBJECT, > @@ -473,7 +515,8 @@ static void test_dummy_iterator(void) > > ObjectProperty *prop; > ObjectPropertyIterator iter; > - bool seenbv = false, seensv = false, seenav = false, seentype; > + bool seenbv = false, seensv = false, seenav = false; > + bool seenqv = false, seentype = false; > > object_property_iter_init(&iter, OBJECT(dobj)); > while ((prop = object_property_iter_next(&iter))) { > @@ -483,6 +526,8 @@ static void test_dummy_iterator(void) > seensv = true; > } else if (g_str_equal(prop->name, "av")) { > seenav = true; > + } else if (g_str_equal(prop->name, "qv")) { > + seenqv = true; > } else if (g_str_equal(prop->name, "type")) { > /* This prop comes from the base Object class */ > seentype = true; > @@ -494,6 +539,7 @@ static void test_dummy_iterator(void) > g_assert(seenbv); > g_assert(seenav); > g_assert(seensv); > + g_assert(seenqv); > g_assert(seentype); > > object_unparent(OBJECT(dobj)); > @@ -513,6 +559,129 @@ static void test_dummy_delchild(void) > object_unparent(OBJECT(dev)); > } > > +static void test_dummy_get_set_ptr_struct(void) > +{ > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > + Error *local_err = NULL; > + const char *s = "my other dummy string"; > + UserDefOne *ret; > + UserDefOne val; > + > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefOne, &local_err); > + g_assert(!local_err); > + > + g_assert_cmpint(ret->integer, ==, 0); > + g_assert_cmpstr(ret->string, ==, "dummy string"); > + g_assert(!ret->has_enum1); > + qapi_free_UserDefOne(ret); > + > + val.integer = 42; > + val.string = g_strdup(s); > + val.has_enum1 = true; > + val.enum1 = ENUM_ONE_VALUE1; > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > + UserDefOne, &local_err); > + g_assert(!local_err); > + > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefOne, &local_err); > + g_assert(!local_err); > + > + g_assert_cmpint(ret->integer, ==, val.integer); > + g_assert_cmpstr(ret->string, ==, val.string); > + g_assert(ret->has_enum1); > + g_assert_cmpint(ret->enum1, ==, val.enum1); > + g_free(val.string); > + qapi_free_UserDefOne(ret); > +} This test tests getting and setting the exact type (UserDefOne). UserDef one has these members: integer: int string: str *enum1: EnumOne > + > +static void test_dummy_get_set_ptr_contravariant(void) > +{ > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > + Error *local_err = NULL; > + UserDefOneMore *ret; > + UserDefOneMore val; > + > + /* You cannot retrieve a contravariant (subclass) type... */ > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefOneMore, &local_err); > + error_free_or_abort(&local_err); > + g_assert(!ret); > + > + /* And you cannot set one either. */ > + val.integer = 42; > + val.string = g_strdup("unused"); > + val.has_enum1 = false; > + val.boolean = false; > + > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > + UserDefOneMore, &local_err); > + g_assert(local_err); > +} This one tests getting and setting UserDefOneMore, which has UserDefOne as base. Members: integer: int string: str *enum1: EnumOne boolean: bool OBJECT_PROPERTY_GET_PTR() gets UserDefOne into UserDefOneMore. It fails because the output visitor populates only integer, string and enum1, and the input visitor then chokes on missing boolean. OBJECT_PROPERTY_SET_PTR() sets UserDefOne from UserDefOneMore. It fails because the output visitor populates integer, string, enum1 and boolean, and the input visitor then chokes on boolean. Because OBJECT_PROPERTY_{GET,SET}_PTR() go through QObject, the "is base of" relationship doesn't actually matter. All you need is the "right" member names and values. Note "values", not necessarily types! Consider { 'struct': 'A', 'data': { 'i': 'int' } } { 'struct': 'B', 'data': { 'i': 'int8' } } Converting from A via QObject to B using output and input visitor works as long as the value of A.i is between -128 and 127. This is what I meant by "duck typing". Is it what you want? Here's a non-ducky way to convert between QAPI types. QAPI guarantees that a pointer to a QAPI type is also valid as pointer to its base type. One can do: UserDefOne *one; UserDefOneMore *more; *(UserDefOne *)more = *one; // get UserDefOne into UserDefOneMore // members not in one are untouched *one = *(UserDefOne *)more; // set UserDefOne from UserDefOneMore // members not in one are ignored Would this technique suffice for your problem? > + > +static void test_dummy_get_set_ptr_covariant(void) > +{ > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > + Error *local_err = NULL; > + UserDefZero *ret; > + UserDefZero val; > + > + /* You can retrieve a covariant (superclass) type... */ > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefZero, &local_err); > + g_assert(!local_err); > + > + g_assert_cmpint(ret->integer, ==, 0); > + qapi_free_UserDefZero(ret); > + > + /* But you cannot set one. */ > + val.integer = 42; > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > + UserDefZero, &local_err); > + error_free_or_abort(&local_err); > + > + /* Test that the property has not been modified at all */ > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefZero, &local_err); > + g_assert(!local_err); > + > + g_assert_cmpint(ret->integer, ==, 0); > + qapi_free_UserDefZero(ret); > +} This one tests getting and setting UserDefZero, which is UserDefOne's base (but that doesn't matter). Members: integer OBJECT_PROPERTY_GET_PTR() gets UserDefOne into UserDefZero. It succeeds because the output visitor again populates integer, string and enum1, and the (non-strict) input visitor ignores string and enum1. OBJECT_PROPERTY_SET_PTR() sets UserDefOne from UserDefZero. It fails because the output visitor populates only integer, and the input visitor then chokes on missing string and boolean. The assymetry is between this and the previous test is a bit odd. > + > +static void test_dummy_get_set_ptr_error(void) > +{ > + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); > + Error *local_err = NULL; > + const char *s = "my other dummy string"; > + UserDefOne *ret; > + UserDefOne val; > + > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "blah", > + UserDefOne, &local_err); > + error_free_or_abort(&local_err); > + g_assert(!ret); > + > + val.integer = 42; > + val.string = g_strdup(s); > + val.has_enum1 = true; > + val.enum1 = 100; > + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", > + UserDefOne, &local_err); > + error_free_or_abort(&local_err); > + > + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", > + UserDefOne, &local_err); > + g_assert(!local_err); > + > + /* Test that the property has not been modified at all */ > + g_assert_cmpint(ret->integer, ==, 0); > + g_assert_cmpstr(ret->string, ==, "dummy string"); > + g_assert(!ret->has_enum1); > + qapi_free_UserDefOne(ret); > +} Not immediately obvious what exactly this one tests. Totally different types? > + > int main(int argc, char **argv) > { > g_test_init(&argc, &argv, NULL); > @@ -530,5 +699,9 @@ int main(int argc, char **argv) > g_test_add_func("/qom/proplist/iterator", test_dummy_iterator); > g_test_add_func("/qom/proplist/delchild", test_dummy_delchild); > > + g_test_add_func("/qom/proplist/get-set-ptr/struct", test_dummy_get_set_ptr_struct); > + g_test_add_func("/qom/proplist/get-set-ptr/error", test_dummy_get_set_ptr_error); > + g_test_add_func("/qom/proplist/get-set-ptr/covariant", test_dummy_get_set_ptr_covariant); > + g_test_add_func("/qom/proplist/get-set-ptr/contravariant", test_dummy_get_set_ptr_contravariant); > return g_test_run(); > } > diff --git a/tests/qapi-schema/qapi-schema-test.json b/tests/qapi-schema/qapi-schema-test.json > index f4d8cc4..4e3f6ff 100644 > --- a/tests/qapi-schema/qapi-schema-test.json > +++ b/tests/qapi-schema/qapi-schema-test.json > @@ -91,6 +91,14 @@ > '*enum1': 'EnumOne' } } # intentional forward reference > > ## > +# @UserDefOneMore: > +# for testing nested structs > +## > +{ 'struct': 'UserDefOneMore', > + 'base': 'UserDefOne', > + 'data': { 'boolean': 'bool' } } I guess you need the chain 'UserDefZero' base of 'UserDefOne' base of 'UserDefOneMore'. The naming in qapi-schema-test.json have become... suboptimal. > + > +## > # @EnumOne: > ## > { 'enum': 'EnumOne', > diff --git a/tests/qapi-schema/qapi-schema-test.out b/tests/qapi-schema/qapi-schema-test.out > index bc8d496..d3a2990 100644 > --- a/tests/qapi-schema/qapi-schema-test.out > +++ b/tests/qapi-schema/qapi-schema-test.out > @@ -107,6 +107,9 @@ object UserDefOne > base UserDefZero > member string: str optional=False > member enum1: EnumOne optional=True > +object UserDefOneMore > + base UserDefOne > + member boolean: bool optional=False > object UserDefOptions > member i64: intList optional=True > member u64: uint64List optional=True > @@ -283,6 +286,9 @@ for testing override of default naming heuristic > doc symbol=UserDefOne expr=('struct', 'UserDefOne') > body= > for testing nested structs > +doc symbol=UserDefOneMore expr=('struct', 'UserDefOneMore') > + body= > +for testing nested structs > doc symbol=EnumOne expr=('enum', 'EnumOne') > doc symbol=UserDefZero expr=('struct', 'UserDefZero') > doc symbol=UserDefTwoDictDict expr=('struct', 'UserDefTwoDictDict') ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr 2017-02-24 14:54 ` Markus Armbruster @ 2017-02-24 15:29 ` Paolo Bonzini 2017-02-24 16:54 ` Eric Blake 2017-02-24 19:18 ` Markus Armbruster 0 siblings, 2 replies; 22+ messages in thread From: Paolo Bonzini @ 2017-02-24 15:29 UTC (permalink / raw) To: Markus Armbruster; +Cc: qemu-devel, marcandre.lureau On 24/02/2017 15:54, Markus Armbruster wrote: >> + /* Do not use object_property_set_qobject until we switch it >> + * to use qobject_input_visitor_new in strict mode. See the >> + * /qom/proplist/get-set-ptr/contravariant unit test. >> + */ > > So no conflict with my "[PATCH 15/21] qom: Make > object_property_set_qobject()'s input visitor strict". No, and in fact this comment would be an example of why that patch is good. With 15/21 we could just use object_property_set_qobject. > Here's a non-ducky way to convert between QAPI types. QAPI guarantees > that a pointer to a QAPI type is also valid as pointer to its base type. > One can do: > > UserDefOne *one; > UserDefOneMore *more; > > *(UserDefOne *)more = *one; // get UserDefOne into UserDefOneMore > // members not in one are untouched > *one = *(UserDefOne *)more; // set UserDefOne from UserDefOneMore > // members not in one are ignored > > Would this technique suffice for your problem? I am not sure. What I'm trying to do here is to keep backwards compatibility in case a device provides UserDefOneMore for a well-known property name, and another device provides UserDefOneAnother. As long as all devices provide the same (duck-typed) base class, things work. Maybe the right thing to do would be to define a union, but I wasn't sure it was possible to do that in a fully backwards compatible way (can you define a union where the discriminator is optional, for example?). >> + >> +static void test_dummy_get_set_ptr_covariant(void) >> +{ >> + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); >> + Error *local_err = NULL; >> + UserDefZero *ret; >> + UserDefZero val; >> + >> + /* You can retrieve a covariant (superclass) type... */ >> + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", >> + UserDefZero, &local_err); >> + g_assert(!local_err); >> + >> + g_assert_cmpint(ret->integer, ==, 0); >> + qapi_free_UserDefZero(ret); >> + >> + /* But you cannot set one. */ >> + val.integer = 42; >> + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", >> + UserDefZero, &local_err); >> + error_free_or_abort(&local_err); >> + >> + /* Test that the property has not been modified at all */ >> + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", >> + UserDefZero, &local_err); >> + g_assert(!local_err); >> + >> + g_assert_cmpint(ret->integer, ==, 0); >> + qapi_free_UserDefZero(ret); >> +} > This one tests getting and setting UserDefZero, which is UserDefOne's > base (but that doesn't matter). Members: > > integer > > OBJECT_PROPERTY_GET_PTR() gets UserDefOne into UserDefZero. It succeeds > because the output visitor again populates integer, string and enum1, > and the (non-strict) input visitor ignores string and enum1. > > OBJECT_PROPERTY_SET_PTR() sets UserDefOne from UserDefZero. It fails > because the output visitor populates only integer, and the input visitor > then chokes on missing string and boolean. > > The assymetry is between this and the previous test is a bit odd. That's true, but it makes sense I think; unlike OOP languages we don't have a QAPI equivalent of virtual methods, which is what makes it useful to have contravariant arguments (i.e. passing an Apple* to a food(Meal*) method). If you're setting UserDefOne from UserDefOneMore, some of the values are going to be lost. Presumably there was a reason why you used UserDefOneMore, and therefore an error is the safe bet. If you're getting UserDefOne from UserDefOneMore, some of the values are going to be lost. However, it's reasonable that you didn't even know that UserDefOneMore existed, which makes it sensible to allow reading into a covariant type. >> + >> +static void test_dummy_get_set_ptr_error(void) >> +{ >> + DummyObject *dobj = DUMMY_OBJECT(object_new(TYPE_DUMMY)); >> + Error *local_err = NULL; >> + const char *s = "my other dummy string"; >> + UserDefOne *ret; >> + UserDefOne val; >> + >> + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "blah", >> + UserDefOne, &local_err); >> + error_free_or_abort(&local_err); >> + g_assert(!ret); >> + >> + val.integer = 42; >> + val.string = g_strdup(s); >> + val.has_enum1 = true; >> + val.enum1 = 100; >> + OBJECT_PROPERTY_SET_PTR(OBJECT(dobj), &val, "qv", >> + UserDefOne, &local_err); >> + error_free_or_abort(&local_err); >> + >> + ret = OBJECT_PROPERTY_GET_PTR(OBJECT(dobj), "qv", >> + UserDefOne, &local_err); >> + g_assert(!local_err); >> + >> + /* Test that the property has not been modified at all */ >> + g_assert_cmpint(ret->integer, ==, 0); >> + g_assert_cmpstr(ret->string, ==, "dummy string"); >> + g_assert(!ret->has_enum1); >> + qapi_free_UserDefOne(ret); >> +} > > Not immediately obvious what exactly this one tests. Totally different > types? enum1 is out of range, so the set fails. The test checks that integer and string parts of the property were not touched. I'm leaving these three patches out of the pull request (and 2.9) while the discussion goes on. Paolo ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr 2017-02-24 15:29 ` Paolo Bonzini @ 2017-02-24 16:54 ` Eric Blake 2017-02-24 17:12 ` Paolo Bonzini 2017-02-24 19:18 ` Markus Armbruster 1 sibling, 1 reply; 22+ messages in thread From: Eric Blake @ 2017-02-24 16:54 UTC (permalink / raw) To: Paolo Bonzini, Markus Armbruster; +Cc: marcandre.lureau, qemu-devel [-- Attachment #1: Type: text/plain, Size: 2484 bytes --] On 02/24/2017 09:29 AM, Paolo Bonzini wrote: > >> Here's a non-ducky way to convert between QAPI types. QAPI guarantees >> that a pointer to a QAPI type is also valid as pointer to its base type. >> One can do: >> >> UserDefOne *one; >> UserDefOneMore *more; >> >> *(UserDefOne *)more = *one; // get UserDefOne into UserDefOneMore >> // members not in one are untouched >> *one = *(UserDefOne *)more; // set UserDefOne from UserDefOneMore >> // members not in one are ignored And rather than having to write the casts yourself, the generator produces qapi_UserDefOneMore_base() which returns the proper UserDefOne pointer (giving you a bit more type safety, and isolates you from any generator change in layout). >> >> Would this technique suffice for your problem? > > I am not sure. What I'm trying to do here is to keep backwards > compatibility in case a device provides UserDefOneMore for a well-known > property name, and another device provides UserDefOneAnother. As long > as all devices provide the same (duck-typed) base class, things work. > > Maybe the right thing to do would be to define a union, but I wasn't > sure it was possible to do that in a fully backwards compatible way (can > you define a union where the discriminator is optional, for example?). Not yet, although I've discussed the idea of an optional discriminator several times before. As soon as we have a killer use case where an optional discriminator makes sense, it shouldn't be too hard to add that support into the generator. > > If you're setting UserDefOne from UserDefOneMore, some of the values are > going to be lost. Presumably there was a reason why you used > UserDefOneMore, and therefore an error is the safe bet. > > If you're getting UserDefOne from UserDefOneMore, some of the values are > going to be lost. However, it's reasonable that you didn't even know > that UserDefOneMore existed, which makes it sensible to allow reading > into a covariant type. How often to we add qapi subtypes, but not adjust the rest of the code base to cope with it existing? Is it going to be less of a maintenance burden just patching all the uses of the property getters to deal with the new type than it is to keep the non-strict visitor? -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 604 bytes --] ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr 2017-02-24 16:54 ` Eric Blake @ 2017-02-24 17:12 ` Paolo Bonzini 0 siblings, 0 replies; 22+ messages in thread From: Paolo Bonzini @ 2017-02-24 17:12 UTC (permalink / raw) To: Eric Blake, Markus Armbruster; +Cc: marcandre.lureau, qemu-devel [-- Attachment #1: Type: text/plain, Size: 970 bytes --] On 24/02/2017 17:54, Eric Blake wrote: >> If you're setting UserDefOne from UserDefOneMore, some of the values are >> going to be lost. Presumably there was a reason why you used >> UserDefOneMore, and therefore an error is the safe bet. >> >> If you're getting UserDefOne from UserDefOneMore, some of the values are >> going to be lost. However, it's reasonable that you didn't even know >> that UserDefOneMore existed, which makes it sensible to allow reading >> into a covariant type. > > How often to we add qapi subtypes, but not adjust the rest of the code > base to cope with it existing? Is it going to be less of a maintenance > burden just patching all the uses of the property getters to deal with > the new type than it is to keep the non-strict visitor? It's not about adjusting the rest the code, it's about the other code not caring about the data in the subtype. Why should it be using it rather than the supertype? Paolo [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 473 bytes --] ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr 2017-02-24 15:29 ` Paolo Bonzini 2017-02-24 16:54 ` Eric Blake @ 2017-02-24 19:18 ` Markus Armbruster 1 sibling, 0 replies; 22+ messages in thread From: Markus Armbruster @ 2017-02-24 19:18 UTC (permalink / raw) To: Paolo Bonzini; +Cc: marcandre.lureau, qemu-devel Paolo Bonzini <pbonzini@redhat.com> writes: [...] > I'm leaving these three patches out of the pull request (and 2.9) while > the discussion goes on. Appreciated! Please remind me to come back to this discussion once the freeze madness has died down. ^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2017-02-24 19:18 UTC | newest] Thread overview: 22+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-02-21 10:42 [Qemu-devel] [PATCH 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED Paolo Bonzini 2017-02-21 10:42 ` [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr Paolo Bonzini 2017-02-21 11:56 ` Paolo Bonzini 2017-02-21 16:36 ` Marc-André Lureau 2017-02-21 15:57 ` Eric Blake 2017-02-21 16:23 ` Paolo Bonzini 2017-02-21 10:42 ` [Qemu-devel] [PATCH 2/3] cpu: implement get_crash_info through QOM properties Paolo Bonzini 2017-02-21 16:11 ` Eric Blake 2017-02-21 10:42 ` [Qemu-devel] [PATCH 3/3] vl: pass CPUState to qemu_system_guest_panicked Paolo Bonzini 2017-02-21 16:13 ` Eric Blake 2017-02-22 9:17 ` Anton Nefedov 2017-02-21 10:50 ` [Qemu-devel] [PATCH 0/3] simplify struct QOM properties and use the result for GUEST_PANICKED no-reply 2017-02-21 10:52 ` no-reply 2017-02-21 11:02 ` no-reply -- strict thread matches above, loose matches on Subject: below -- 2017-02-22 18:04 [Qemu-devel] [PATCH v2 " Paolo Bonzini 2017-02-22 18:04 ` [Qemu-devel] [PATCH 1/3] qom-qobject: introduce object_property_{g, s}et_ptr Paolo Bonzini 2017-02-22 23:34 ` Eric Blake 2017-02-23 8:33 ` Marc-André Lureau 2017-02-24 14:54 ` Markus Armbruster 2017-02-24 15:29 ` Paolo Bonzini 2017-02-24 16:54 ` Eric Blake 2017-02-24 17:12 ` Paolo Bonzini 2017-02-24 19:18 ` Markus Armbruster
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).