From bac716096aee0fc9223a4b6fe2c9e570b7220d4a Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Thu, 21 Sep 2023 10:29:28 +0100 Subject: [PATCH] trace.h: Use side_ptr_t for stack-copy compound type args Signed-off-by: Mathieu Desnoyers --- include/side/trace.h | 16 ++++++++-------- src/tracer.c | 14 +++++++------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/include/side/trace.h b/include/side/trace.h index 42aba08..76c82b8 100644 --- a/include/side/trace.h +++ b/include/side/trace.h @@ -530,10 +530,10 @@ union side_arg_static { union side_float_value float_value; /* Stack-copy compound types */ - const struct side_arg_vec *side_struct; - const struct side_arg_variant *side_variant; - const struct side_arg_vec *side_array; - const struct side_arg_vec *side_vla; + side_ptr_t(const struct side_arg_vec) side_struct; + side_ptr_t(const struct side_arg_variant) side_variant; + side_ptr_t(const struct side_arg_vec) side_array; + side_ptr_t(const struct side_arg_vec) side_vla; void *side_vla_app_visitor_ctx; /* Gather basic types */ @@ -1445,7 +1445,7 @@ struct side_event_description { #define side_arg_float_binary64(_val) { .type = SIDE_TYPE_FLOAT_BINARY64, .u = { .side_static = { .float_value = { .side_float_binary64 = (_val) } } } } #define side_arg_float_binary128(_val) { .type = SIDE_TYPE_FLOAT_BINARY128, .u = { .side_static = { .float_value = { .side_float_binary128 = (_val) } } } } -#define side_arg_struct(_side_type) { .type = SIDE_TYPE_STRUCT, .u = { .side_static = { .side_struct = (_side_type) } } } +#define side_arg_struct(_side_type) { .type = SIDE_TYPE_STRUCT, .u = { .side_static = { .side_struct = SIDE_PTR_INIT(_side_type) } } } #define side_arg_define_variant(_identifier, _selector_val, _option) \ const struct side_arg_variant _identifier = { \ @@ -1457,13 +1457,13 @@ struct side_event_description { .type = SIDE_TYPE_VARIANT, \ .u = { \ .side_static = { \ - .side_variant = (_side_variant), \ + .side_variant = SIDE_PTR_INIT(_side_variant), \ }, \ }, \ } -#define side_arg_array(_side_type) { .type = SIDE_TYPE_ARRAY, .u = { .side_static = { .side_array = (_side_type) } } } -#define side_arg_vla(_side_type) { .type = SIDE_TYPE_VLA, .u = { .side_static = { .side_vla = (_side_type) } } } +#define side_arg_array(_side_type) { .type = SIDE_TYPE_ARRAY, .u = { .side_static = { .side_array = SIDE_PTR_INIT(_side_type) } } } +#define side_arg_vla(_side_type) { .type = SIDE_TYPE_VLA, .u = { .side_static = { .side_vla = SIDE_PTR_INIT(_side_type) } } } #define side_arg_vla_visitor(_ctx) { .type = SIDE_TYPE_VLA_VISITOR, .u = { .side_static = { .side_vla_app_visitor_ctx = (_ctx) } } } /* Gather field arguments */ diff --git a/src/tracer.c b/src/tracer.c index fe09d7b..c7c1cc8 100644 --- a/src/tracer.c +++ b/src/tracer.c @@ -538,13 +538,13 @@ void tracer_print_enum_bitmap(const struct side_type *type_desc, break; case SIDE_TYPE_ARRAY: elem_type = side_ptr_get(enum_elem_type->u.side_array.elem_type); - array_item = item->u.side_static.side_array->sav; + array_item = side_ptr_get(item->u.side_static.side_array)->sav; nr_items = type_desc->u.side_array.length; break; case SIDE_TYPE_VLA: elem_type = side_ptr_get(enum_elem_type->u.side_vla.elem_type); - array_item = item->u.side_static.side_vla->sav; - nr_items = item->u.side_static.side_vla->len; + array_item = side_ptr_get(item->u.side_static.side_vla)->sav; + nr_items = side_ptr_get(item->u.side_static.side_vla)->len; break; default: fprintf(stderr, "ERROR: Unexpected enum element type\n"); @@ -952,16 +952,16 @@ void tracer_print_type(const struct side_type *type_desc, const struct side_arg /* Stack-copy compound types */ case SIDE_TYPE_STRUCT: - tracer_print_struct(type_desc, item->u.side_static.side_struct); + tracer_print_struct(type_desc, side_ptr_get(item->u.side_static.side_struct)); break; case SIDE_TYPE_VARIANT: - tracer_print_variant(type_desc, item->u.side_static.side_variant); + tracer_print_variant(type_desc, side_ptr_get(item->u.side_static.side_variant)); break; case SIDE_TYPE_ARRAY: - tracer_print_array(type_desc, item->u.side_static.side_array); + tracer_print_array(type_desc, side_ptr_get(item->u.side_static.side_array)); break; case SIDE_TYPE_VLA: - tracer_print_vla(type_desc, item->u.side_static.side_vla); + tracer_print_vla(type_desc, side_ptr_get(item->u.side_static.side_vla)); break; case SIDE_TYPE_VLA_VISITOR: tracer_print_vla_visitor(type_desc, item->u.side_static.side_vla_app_visitor_ctx); -- 2.34.1