From 767e900547208a7a0b810cd22f0619e6eafa83d5 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Mon, 19 Feb 2018 16:02:14 -0500 Subject: [PATCH] qom: Make enum string tables const-correct The enum string table parameters in various QOM/QAPI methods are declared 'const char *strings[]'. This results in const warnings if passed a variable that was declared as static const char * const strings[] = { .... }; Add the extra const annotation to the parameters, since neither the string elements, nor the array itself should ever be modified. Backports commit 2e4450ff432daef524cb3557fca68a3b7b5c7823 from qemu --- qemu/include/qapi/visitor-impl.h | 6 +++--- qemu/include/qapi/visitor.h | 2 +- qemu/qapi/qapi-dealloc-visitor.c | 3 ++- qemu/qapi/qapi-visit-core.c | 6 +++--- qemu/scripts/qapi-types.py | 4 ++-- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/qemu/include/qapi/visitor-impl.h b/qemu/include/qapi/visitor-impl.h index bff4da7b..30fdfd34 100644 --- a/qemu/include/qapi/visitor-impl.h +++ b/qemu/include/qapi/visitor-impl.h @@ -30,7 +30,7 @@ struct Visitor GenericList *(*next_list)(Visitor *v, GenericList **list); void (*end_list)(Visitor *v); - void (*type_enum)(Visitor *v, int *obj, const char *strings[], + void (*type_enum)(Visitor *v, int *obj, const char * const strings[], const char *kind, const char *name, Error **errp); void (*get_next_type)(Visitor *v, int *kind, const int *qobjects, const char *name, Error **errp); @@ -63,9 +63,9 @@ struct Visitor void (*end_union)(Visitor *v, bool data_present, Error **errp); }; -void input_type_enum(Visitor *v, int *obj, const char *strings[], +void input_type_enum(Visitor *v, int *obj, const char * const strings[], const char *kind, const char *name, Error **errp); -void output_type_enum(Visitor *v, int *obj, const char *strings[], +void output_type_enum(Visitor *v, int *obj, const char * const strings[], const char *kind, const char *name, Error **errp); #endif diff --git a/qemu/include/qapi/visitor.h b/qemu/include/qapi/visitor.h index eebc418a..a3565894 100644 --- a/qemu/include/qapi/visitor.h +++ b/qemu/include/qapi/visitor.h @@ -43,7 +43,7 @@ void visit_optional(Visitor *v, bool *present, const char *name, Error **errp); void visit_get_next_type(Visitor *v, int *obj, const int *qtypes, const char *name, Error **errp); -void visit_type_enum(Visitor *v, int *obj, const char *strings[], +void visit_type_enum(Visitor *v, int *obj, const char * const strings[], const char *kind, const char *name, Error **errp); void visit_type_int(Visitor *v, int64_t *obj, const char *name, Error **errp); void visit_type_uint8(Visitor *v, uint8_t *obj, const char *name, Error **errp); diff --git a/qemu/qapi/qapi-dealloc-visitor.c b/qemu/qapi/qapi-dealloc-visitor.c index a5eef232..5c31712c 100644 --- a/qemu/qapi/qapi-dealloc-visitor.c +++ b/qemu/qapi/qapi-dealloc-visitor.c @@ -161,7 +161,8 @@ static void qapi_dealloc_type_size(Visitor *v, uint64_t *obj, const char *name, { } -static void qapi_dealloc_type_enum(Visitor *v, int *obj, const char *strings[], +static void qapi_dealloc_type_enum(Visitor *v, int *obj, + const char * const strings[], const char *kind, const char *name, Error **errp) { diff --git a/qemu/qapi/qapi-visit-core.c b/qemu/qapi/qapi-visit-core.c index a7c75c0f..584265dd 100644 --- a/qemu/qapi/qapi-visit-core.c +++ b/qemu/qapi/qapi-visit-core.c @@ -90,7 +90,7 @@ void visit_get_next_type(Visitor *v, int *obj, const int *qtypes, } } -void visit_type_enum(Visitor *v, int *obj, const char *strings[], +void visit_type_enum(Visitor *v, int *obj, const char * const strings[], const char *kind, const char *name, Error **errp) { v->type_enum(v, obj, strings, kind, name, errp); @@ -255,7 +255,7 @@ void visit_type_number(Visitor *v, double *obj, const char *name, Error **errp) v->type_number(v, obj, name, errp); } -void output_type_enum(Visitor *v, int *obj, const char *strings[], +void output_type_enum(Visitor *v, int *obj, const char * const strings[], const char *kind, const char *name, Error **errp) { @@ -274,7 +274,7 @@ void output_type_enum(Visitor *v, int *obj, const char *strings[], visit_type_str(v, &enum_str, name, errp); } -void input_type_enum(Visitor *v, int *obj, const char *strings[], +void input_type_enum(Visitor *v, int *obj, const char * const strings[], const char *kind, const char *name, Error **errp) { diff --git a/qemu/scripts/qapi-types.py b/qemu/scripts/qapi-types.py index 07b439b5..ab6da2d9 100644 --- a/qemu/scripts/qapi-types.py +++ b/qemu/scripts/qapi-types.py @@ -105,7 +105,7 @@ struct %(name)s def generate_enum_lookup(name, values): ret = mcgen(''' -const char *%(name)s_lookup[] = { +const char * const %(name)s_lookup[] = { ''', name=c_name(name)) i = 0 @@ -125,7 +125,7 @@ const char *%(name)s_lookup[] = { def generate_enum(name, values): name = c_name(name) lookup_decl = mcgen(''' -extern const char *%(name)s_lookup[]; +extern const char * const %(name)s_lookup[]; ''', name=name)