xemu/scripts/coccinelle/qom-parent-type.cocci
Paolo Bonzini 22fb6eb571 qom: fix objects with improper parent type
Some objects accidentally inherit ObjectClass instead of Object.
They compile silently but may crash after downcasting.

In this patch, we introduce a coccinelle script to find broken
declarations and fix them manually with proper base type.

Signed-off-by: Sergey Nizovtsev <snizovtsev@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2020-10-12 11:50:22 -04:00

27 lines
491 B
Plaintext

// Highlight object declarations that don't look like object class but
// accidentally inherit from it.
@match@
identifier obj_t, fld;
type parent_t =~ ".*Class$";
@@
struct obj_t {
parent_t fld;
...
};
@script:python filter depends on match@
obj_t << match.obj_t;
@@
is_class_obj = obj_t.endswith('Class')
cocci.include_match(not is_class_obj)
@replacement depends on filter@
identifier match.obj_t, match.fld;
type match.parent_t;
@@
struct obj_t {
* parent_t fld;
...
};