Introduce union side_bool_value
[libside.git] / src / test.c
CommitLineData
f611d0c3
MD
1// SPDX-License-Identifier: MIT
2/*
3 * Copyright 2022 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
4 */
5
6#include <stdint.h>
7#include <inttypes.h>
8#include <stdlib.h>
9#include <stdio.h>
4f40d951 10#include <stdbool.h>
7a1cb105 11#include <stddef.h>
f611d0c3
MD
12
13#include <side/trace.h>
14#include "tracer.h"
15
16/* User code example */
17
89747802 18side_static_event(my_provider_event, "myprovider", "myevent", SIDE_LOGLEVEL_DEBUG,
f611d0c3 19 side_field_list(
485b800a
MD
20 side_field_u32("abc", side_attr_list()),
21 side_field_s64("def", side_attr_list()),
f5e650d7 22 side_field_pointer("ptr", side_attr_list()),
66de373e
MD
23 side_field_dynamic("dynamic"),
24 side_field_dynamic("dynamic_pointer"),
9b641221 25 side_field_null("null", side_attr_list()),
399c836b
MD
26 ),
27 side_attr_list()
f611d0c3
MD
28);
29
30static
31void test_fields(void)
32{
33 uint32_t uw = 42;
34 int64_t sdw = -500;
35
f5e650d7
MD
36 side_event(my_provider_event,
37 side_arg_list(
38 side_arg_u32(uw),
39 side_arg_s64(sdw),
40 side_arg_pointer((void *) 0x1),
66de373e
MD
41 side_arg_dynamic_string("zzz", side_attr_list()),
42 side_arg_dynamic_pointer((void *) 0x1, side_attr_list()),
9b641221 43 side_arg_null(),
f5e650d7
MD
44 )
45 );
f611d0c3
MD
46}
47
89747802
MD
48side_hidden_event(my_provider_event_hidden, "myprovider", "myeventhidden", SIDE_LOGLEVEL_DEBUG,
49 side_field_list(
50 side_field_u32("abc", side_attr_list()),
51 ),
52 side_attr_list()
53);
54
55static
56void test_event_hidden(void)
57{
89747802
MD
58 side_event(my_provider_event_hidden, side_arg_list(side_arg_u32(2)));
59}
60
61side_declare_event(my_provider_event_export);
62
63side_export_event(my_provider_event_export, "myprovider", "myeventexport", SIDE_LOGLEVEL_DEBUG,
64 side_field_list(
65 side_field_u32("abc", side_attr_list()),
66 ),
67 side_attr_list()
68);
69
70static
71void test_event_export(void)
72{
89747802
MD
73 side_event(my_provider_event_export, side_arg_list(side_arg_u32(2)));
74}
75
76side_static_event(my_provider_event_struct_literal, "myprovider", "myeventstructliteral", SIDE_LOGLEVEL_DEBUG,
f611d0c3 77 side_field_list(
c7a14585
MD
78 side_field_struct("structliteral",
79 side_struct_literal(
80 side_field_list(
81 side_field_u32("x", side_attr_list()),
82 side_field_s64("y", side_attr_list()),
83 ),
84 side_attr_list()
85 )
f611d0c3 86 ),
485b800a 87 side_field_u8("z", side_attr_list()),
399c836b
MD
88 ),
89 side_attr_list()
f611d0c3
MD
90);
91
c7a14585
MD
92static
93void test_struct_literal(void)
94{
c7a14585
MD
95 side_event_cond(my_provider_event_struct_literal) {
96 side_arg_define_vec(mystruct, side_arg_list(side_arg_u32(21), side_arg_s64(22)));
97 side_event_call(my_provider_event_struct_literal, side_arg_list(side_arg_struct(&mystruct), side_arg_u8(55)));
98 }
99}
100
101static side_define_struct(mystructdef,
102 side_field_list(
103 side_field_u32("x", side_attr_list()),
104 side_field_s64("y", side_attr_list()),
105 ),
106 side_attr_list()
107);
108
89747802 109side_static_event(my_provider_event_struct, "myprovider", "myeventstruct", SIDE_LOGLEVEL_DEBUG,
c7a14585
MD
110 side_field_list(
111 side_field_struct("struct", &mystructdef),
112 side_field_u8("z", side_attr_list()),
113 ),
114 side_attr_list()
115);
116
f611d0c3
MD
117static
118void test_struct(void)
119{
c7a14585 120 side_event_cond(my_provider_event_struct) {
f611d0c3 121 side_arg_define_vec(mystruct, side_arg_list(side_arg_u32(21), side_arg_s64(22)));
c7a14585 122 side_event_call(my_provider_event_struct, side_arg_list(side_arg_struct(&mystruct), side_arg_u8(55)));
f611d0c3
MD
123 }
124}
125
89747802 126side_static_event(my_provider_event_array, "myprovider", "myarray", SIDE_LOGLEVEL_DEBUG,
f611d0c3 127 side_field_list(
9a55f555 128 side_field_array("arr", side_elem(side_type_u32(side_attr_list())), 3, side_attr_list()),
485b800a 129 side_field_s64("v", side_attr_list()),
399c836b
MD
130 ),
131 side_attr_list()
f611d0c3
MD
132);
133
134static
135void test_array(void)
136{
d5cdb129 137 side_event_cond(my_provider_event_array) {
f611d0c3 138 side_arg_define_vec(myarray, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3)));
d5cdb129 139 side_event_call(my_provider_event_array, side_arg_list(side_arg_array(&myarray), side_arg_s64(42)));
f611d0c3
MD
140 }
141}
142
89747802 143side_static_event(my_provider_event_vla, "myprovider", "myvla", SIDE_LOGLEVEL_DEBUG,
f611d0c3 144 side_field_list(
9a55f555 145 side_field_vla("vla", side_elem(side_type_u32(side_attr_list())), side_attr_list()),
485b800a 146 side_field_s64("v", side_attr_list()),
399c836b
MD
147 ),
148 side_attr_list()
f611d0c3
MD
149);
150
151static
152void test_vla(void)
153{
d5cdb129 154 side_event_cond(my_provider_event_vla) {
f611d0c3 155 side_arg_define_vec(myvla, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3)));
d5cdb129 156 side_event_call(my_provider_event_vla, side_arg_list(side_arg_vla(&myvla), side_arg_s64(42)));
f611d0c3
MD
157 }
158}
159
cdd6e858
MD
160/* 1D array visitor */
161
f611d0c3
MD
162struct app_visitor_ctx {
163 const uint32_t *ptr;
352a4b77 164 uint32_t length;
f611d0c3
MD
165};
166
352a4b77
MD
167static
168enum side_visitor_status test_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx)
f611d0c3
MD
169{
170 struct app_visitor_ctx *ctx = (struct app_visitor_ctx *) _ctx;
352a4b77
MD
171 uint32_t length = ctx->length, i;
172
173 for (i = 0; i < length; i++) {
66de373e 174 const struct side_arg elem = side_arg_u32(ctx->ptr[i]);
ffb5c809 175
db6ecef9
MD
176 if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK)
177 return SIDE_VISITOR_STATUS_ERROR;
352a4b77 178 }
f611d0c3
MD
179 return SIDE_VISITOR_STATUS_OK;
180}
181
182static uint32_t testarray[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
183
89747802 184side_static_event(my_provider_event_vla_visitor, "myprovider", "myvlavisit", SIDE_LOGLEVEL_DEBUG,
f611d0c3 185 side_field_list(
9a55f555 186 side_field_vla_visitor("vlavisit", side_elem(side_type_u32(side_attr_list())), test_visitor, side_attr_list()),
485b800a 187 side_field_s64("v", side_attr_list()),
399c836b
MD
188 ),
189 side_attr_list()
f611d0c3
MD
190);
191
192static
193void test_vla_visitor(void)
194{
d5cdb129 195 side_event_cond(my_provider_event_vla_visitor) {
f611d0c3
MD
196 struct app_visitor_ctx ctx = {
197 .ptr = testarray,
352a4b77 198 .length = SIDE_ARRAY_SIZE(testarray),
f611d0c3 199 };
d5cdb129 200 side_event_call(my_provider_event_vla_visitor, side_arg_list(side_arg_vla_visitor(&ctx), side_arg_s64(42)));
f611d0c3
MD
201 }
202}
203
cdd6e858
MD
204/* 2D array visitor */
205
206struct app_visitor_2d_inner_ctx {
207 const uint32_t *ptr;
208 uint32_t length;
209};
210
211static
212enum side_visitor_status test_inner_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx)
213{
214 struct app_visitor_2d_inner_ctx *ctx = (struct app_visitor_2d_inner_ctx *) _ctx;
215 uint32_t length = ctx->length, i;
216
217 for (i = 0; i < length; i++) {
66de373e 218 const struct side_arg elem = side_arg_u32(ctx->ptr[i]);
ffb5c809 219
db6ecef9
MD
220 if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK)
221 return SIDE_VISITOR_STATUS_ERROR;
cdd6e858
MD
222 }
223 return SIDE_VISITOR_STATUS_OK;
224}
225
226struct app_visitor_2d_outer_ctx {
227 const uint32_t (*ptr)[2];
228 uint32_t length;
229};
230
231static
232enum side_visitor_status test_outer_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx)
233{
234 struct app_visitor_2d_outer_ctx *ctx = (struct app_visitor_2d_outer_ctx *) _ctx;
235 uint32_t length = ctx->length, i;
236
237 for (i = 0; i < length; i++) {
238 struct app_visitor_2d_inner_ctx inner_ctx = {
239 .ptr = ctx->ptr[i],
240 .length = 2,
241 };
66de373e 242 const struct side_arg elem = side_arg_vla_visitor(&inner_ctx);
db6ecef9
MD
243 if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK)
244 return SIDE_VISITOR_STATUS_ERROR;
cdd6e858
MD
245 }
246 return SIDE_VISITOR_STATUS_OK;
247}
248
249static uint32_t testarray2d[][2] = {
250 { 1, 2 },
251 { 33, 44 },
252 { 55, 66 },
253};
254
89747802 255side_static_event(my_provider_event_vla_visitor2d, "myprovider", "myvlavisit2d", SIDE_LOGLEVEL_DEBUG,
cdd6e858
MD
256 side_field_list(
257 side_field_vla_visitor("vlavisit2d",
f37a556f 258 side_elem(
32ba58fc 259 side_type_vla_visitor(
9a55f555 260 side_elem(side_type_u32(side_attr_list())),
f37a556f
MD
261 test_inner_visitor,
262 side_attr_list())
263 ), test_outer_visitor, side_attr_list()),
485b800a 264 side_field_s64("v", side_attr_list()),
399c836b
MD
265 ),
266 side_attr_list()
cdd6e858
MD
267);
268
269static
270void test_vla_visitor_2d(void)
271{
d5cdb129 272 side_event_cond(my_provider_event_vla_visitor2d) {
cdd6e858
MD
273 struct app_visitor_2d_outer_ctx ctx = {
274 .ptr = testarray2d,
275 .length = SIDE_ARRAY_SIZE(testarray2d),
276 };
d5cdb129 277 side_event_call(my_provider_event_vla_visitor2d, side_arg_list(side_arg_vla_visitor(&ctx), side_arg_s64(42)));
cdd6e858
MD
278 }
279}
280
89747802 281side_static_event(my_provider_event_dynamic_basic,
a2e2357e
MD
282 "myprovider", "mydynamicbasic", SIDE_LOGLEVEL_DEBUG,
283 side_field_list(
66de373e 284 side_field_dynamic("dynamic"),
399c836b
MD
285 ),
286 side_attr_list()
a2e2357e
MD
287);
288
289static
290void test_dynamic_basic_type(void)
291{
d5cdb129 292 side_event(my_provider_event_dynamic_basic,
66de373e 293 side_arg_list(side_arg_dynamic_s16(-33, side_attr_list())));
a2e2357e
MD
294}
295
89747802 296side_static_event(my_provider_event_dynamic_vla,
a2e2357e
MD
297 "myprovider", "mydynamicvla", SIDE_LOGLEVEL_DEBUG,
298 side_field_list(
66de373e 299 side_field_dynamic("dynamic"),
399c836b
MD
300 ),
301 side_attr_list()
a2e2357e
MD
302);
303
304static
305void test_dynamic_vla(void)
306{
948e3e72
MD
307 side_arg_dynamic_define_vec(myvla,
308 side_arg_list(
808bd9bf
MD
309 side_arg_dynamic_u32(1, side_attr_list()),
310 side_arg_dynamic_u32(2, side_attr_list()),
311 side_arg_dynamic_u32(3, side_attr_list()),
8d20e708
MD
312 ),
313 side_attr_list()
df075fa5 314 );
d5cdb129 315 side_event(my_provider_event_dynamic_vla,
66de373e 316 side_arg_list(side_arg_dynamic_vla(&myvla)));
a2e2357e
MD
317}
318
89747802 319side_static_event(my_provider_event_dynamic_null,
465e5e7e
MD
320 "myprovider", "mydynamicnull", SIDE_LOGLEVEL_DEBUG,
321 side_field_list(
66de373e 322 side_field_dynamic("dynamic"),
399c836b
MD
323 ),
324 side_attr_list()
465e5e7e
MD
325);
326
327static
328void test_dynamic_null(void)
329{
d5cdb129 330 side_event(my_provider_event_dynamic_null,
66de373e 331 side_arg_list(side_arg_dynamic_null(side_attr_list())));
465e5e7e
MD
332}
333
89747802 334side_static_event(my_provider_event_dynamic_struct,
c208889e 335 "myprovider", "mydynamicstruct", SIDE_LOGLEVEL_DEBUG,
465e5e7e 336 side_field_list(
66de373e 337 side_field_dynamic("dynamic"),
399c836b
MD
338 ),
339 side_attr_list()
465e5e7e
MD
340);
341
342static
c208889e 343void test_dynamic_struct(void)
465e5e7e 344{
c208889e 345 side_arg_dynamic_define_struct(mystruct,
465e5e7e 346 side_arg_list(
808bd9bf
MD
347 side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())),
348 side_arg_dynamic_field("b", side_arg_dynamic_string("zzz", side_attr_list())),
349 side_arg_dynamic_field("c", side_arg_dynamic_null(side_attr_list())),
8d20e708
MD
350 ),
351 side_attr_list()
465e5e7e
MD
352 );
353
d5cdb129 354 side_event(my_provider_event_dynamic_struct,
66de373e 355 side_arg_list(side_arg_dynamic_struct(&mystruct)));
465e5e7e
MD
356}
357
89747802 358side_static_event(my_provider_event_dynamic_nested_struct,
c208889e 359 "myprovider", "mydynamicnestedstruct", SIDE_LOGLEVEL_DEBUG,
3222d397 360 side_field_list(
66de373e 361 side_field_dynamic("dynamic"),
399c836b
MD
362 ),
363 side_attr_list()
3222d397
MD
364);
365
366static
c208889e 367void test_dynamic_nested_struct(void)
3222d397 368{
c208889e 369 side_arg_dynamic_define_struct(nested,
3222d397 370 side_arg_list(
808bd9bf
MD
371 side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())),
372 side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())),
8d20e708
MD
373 ),
374 side_attr_list()
3222d397 375 );
c208889e 376 side_arg_dynamic_define_struct(nested2,
3222d397 377 side_arg_list(
808bd9bf
MD
378 side_arg_dynamic_field("aa", side_arg_dynamic_u64(128, side_attr_list())),
379 side_arg_dynamic_field("bb", side_arg_dynamic_u16(1, side_attr_list())),
8d20e708
MD
380 ),
381 side_attr_list()
3222d397 382 );
c208889e 383 side_arg_dynamic_define_struct(mystruct,
3222d397 384 side_arg_list(
8d20e708
MD
385 side_arg_dynamic_field("nested", side_arg_dynamic_struct(&nested)),
386 side_arg_dynamic_field("nested2", side_arg_dynamic_struct(&nested2)),
387 ),
388 side_attr_list()
3222d397 389 );
d5cdb129 390 side_event(my_provider_event_dynamic_nested_struct,
66de373e 391 side_arg_list(side_arg_dynamic_struct(&mystruct)));
3222d397
MD
392}
393
89747802 394side_static_event(my_provider_event_dynamic_vla_struct,
c208889e 395 "myprovider", "mydynamicvlastruct", SIDE_LOGLEVEL_DEBUG,
7ce1b78f 396 side_field_list(
66de373e 397 side_field_dynamic("dynamic"),
399c836b
MD
398 ),
399 side_attr_list()
7ce1b78f
MD
400);
401
402static
c208889e 403void test_dynamic_vla_struct(void)
7ce1b78f 404{
c208889e 405 side_arg_dynamic_define_struct(nested,
7ce1b78f 406 side_arg_list(
808bd9bf
MD
407 side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())),
408 side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())),
8d20e708
MD
409 ),
410 side_attr_list()
7ce1b78f
MD
411 );
412 side_arg_dynamic_define_vec(myvla,
413 side_arg_list(
8d20e708
MD
414 side_arg_dynamic_struct(&nested),
415 side_arg_dynamic_struct(&nested),
416 side_arg_dynamic_struct(&nested),
417 side_arg_dynamic_struct(&nested),
418 ),
419 side_attr_list()
7ce1b78f 420 );
d5cdb129 421 side_event(my_provider_event_dynamic_vla_struct,
66de373e 422 side_arg_list(side_arg_dynamic_vla(&myvla)));
7ce1b78f
MD
423}
424
89747802 425side_static_event(my_provider_event_dynamic_struct_vla,
c208889e 426 "myprovider", "mydynamicstructvla", SIDE_LOGLEVEL_DEBUG,
980bfdc4 427 side_field_list(
66de373e 428 side_field_dynamic("dynamic"),
399c836b
MD
429 ),
430 side_attr_list()
980bfdc4
MD
431);
432
433static
c208889e 434void test_dynamic_struct_vla(void)
980bfdc4
MD
435{
436 side_arg_dynamic_define_vec(myvla,
948e3e72 437 side_arg_list(
808bd9bf
MD
438 side_arg_dynamic_u32(1, side_attr_list()),
439 side_arg_dynamic_u32(2, side_attr_list()),
440 side_arg_dynamic_u32(3, side_attr_list()),
8d20e708
MD
441 ),
442 side_attr_list()
df075fa5 443 );
980bfdc4 444 side_arg_dynamic_define_vec(myvla2,
948e3e72 445 side_arg_list(
808bd9bf
MD
446 side_arg_dynamic_u32(4, side_attr_list()),
447 side_arg_dynamic_u64(5, side_attr_list()),
448 side_arg_dynamic_u32(6, side_attr_list()),
8d20e708
MD
449 ),
450 side_attr_list()
df075fa5 451 );
c208889e 452 side_arg_dynamic_define_struct(mystruct,
980bfdc4 453 side_arg_list(
8d20e708
MD
454 side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla)),
455 side_arg_dynamic_field("b", side_arg_dynamic_vla(&myvla2)),
456 ),
457 side_attr_list()
980bfdc4 458 );
d5cdb129 459 side_event(my_provider_event_dynamic_struct_vla,
66de373e 460 side_arg_list(side_arg_dynamic_struct(&mystruct)));
980bfdc4
MD
461}
462
89747802 463side_static_event(my_provider_event_dynamic_nested_vla,
948e3e72
MD
464 "myprovider", "mydynamicnestedvla", SIDE_LOGLEVEL_DEBUG,
465 side_field_list(
66de373e 466 side_field_dynamic("dynamic"),
399c836b
MD
467 ),
468 side_attr_list()
948e3e72
MD
469);
470
471static
472void test_dynamic_nested_vla(void)
473{
474 side_arg_dynamic_define_vec(nestedvla,
475 side_arg_list(
808bd9bf
MD
476 side_arg_dynamic_u32(1, side_attr_list()),
477 side_arg_dynamic_u16(2, side_attr_list()),
478 side_arg_dynamic_u32(3, side_attr_list()),
8d20e708
MD
479 ),
480 side_attr_list()
948e3e72
MD
481 );
482 side_arg_dynamic_define_vec(nestedvla2,
483 side_arg_list(
808bd9bf
MD
484 side_arg_dynamic_u8(4, side_attr_list()),
485 side_arg_dynamic_u32(5, side_attr_list()),
486 side_arg_dynamic_u32(6, side_attr_list()),
8d20e708
MD
487 ),
488 side_attr_list()
948e3e72
MD
489 );
490 side_arg_dynamic_define_vec(myvla,
491 side_arg_list(
8d20e708
MD
492 side_arg_dynamic_vla(&nestedvla),
493 side_arg_dynamic_vla(&nestedvla2),
494 ),
495 side_attr_list()
948e3e72 496 );
d5cdb129 497 side_event(my_provider_event_dynamic_nested_vla,
66de373e 498 side_arg_list(side_arg_dynamic_vla(&myvla)));
948e3e72
MD
499}
500
89747802 501side_static_event_variadic(my_provider_event_variadic,
19fa6aa2 502 "myprovider", "myvariadicevent", SIDE_LOGLEVEL_DEBUG,
399c836b
MD
503 side_field_list(),
504 side_attr_list()
19fa6aa2
MD
505);
506
507static
508void test_variadic(void)
509{
d5cdb129 510 side_event_variadic(my_provider_event_variadic,
19fa6aa2
MD
511 side_arg_list(),
512 side_arg_list(
808bd9bf
MD
513 side_arg_dynamic_field("a", side_arg_dynamic_u32(55, side_attr_list())),
514 side_arg_dynamic_field("b", side_arg_dynamic_s8(-4, side_attr_list())),
8d20e708
MD
515 ),
516 side_attr_list()
19fa6aa2
MD
517 );
518}
519
89747802 520side_static_event_variadic(my_provider_event_static_variadic,
41c4d119
MD
521 "myprovider", "mystaticvariadicevent", SIDE_LOGLEVEL_DEBUG,
522 side_field_list(
485b800a
MD
523 side_field_u32("abc", side_attr_list()),
524 side_field_u16("def", side_attr_list()),
399c836b
MD
525 ),
526 side_attr_list()
41c4d119
MD
527);
528
529static
530void test_static_variadic(void)
531{
d5cdb129 532 side_event_variadic(my_provider_event_static_variadic,
41c4d119
MD
533 side_arg_list(
534 side_arg_u32(1),
535 side_arg_u16(2),
536 ),
537 side_arg_list(
808bd9bf
MD
538 side_arg_dynamic_field("a", side_arg_dynamic_u32(55, side_attr_list())),
539 side_arg_dynamic_field("b", side_arg_dynamic_s8(-4, side_attr_list())),
8d20e708
MD
540 ),
541 side_attr_list()
41c4d119
MD
542 );
543}
544
89747802 545side_static_event(my_provider_event_bool, "myprovider", "myeventbool", SIDE_LOGLEVEL_DEBUG,
4f40d951 546 side_field_list(
485b800a
MD
547 side_field_bool("a_false", side_attr_list()),
548 side_field_bool("b_true", side_attr_list()),
549 side_field_bool("c_true", side_attr_list()),
550 side_field_bool("d_true", side_attr_list()),
551 side_field_bool("e_true", side_attr_list()),
552 side_field_bool("f_false", side_attr_list()),
553 side_field_bool("g_true", side_attr_list()),
399c836b
MD
554 ),
555 side_attr_list()
4f40d951
MD
556);
557
558static
559void test_bool(void)
560{
561 uint32_t a = 0;
562 uint32_t b = 1;
563 uint64_t c = 0x12345678;
564 int16_t d = -32768;
565 bool e = true;
566 bool f = false;
567 uint32_t g = 256;
568
d5cdb129 569 side_event(my_provider_event_bool,
4f40d951
MD
570 side_arg_list(
571 side_arg_bool(a),
572 side_arg_bool(b),
573 side_arg_bool(c),
574 side_arg_bool(d),
575 side_arg_bool(e),
576 side_arg_bool(f),
577 side_arg_bool(g),
578 )
579 );
580}
581
89747802 582side_static_event_variadic(my_provider_event_dynamic_bool,
4f40d951 583 "myprovider", "mydynamicbool", SIDE_LOGLEVEL_DEBUG,
399c836b
MD
584 side_field_list(),
585 side_attr_list()
4f40d951
MD
586);
587
588static
589void test_dynamic_bool(void)
590{
d5cdb129 591 side_event_variadic(my_provider_event_dynamic_bool,
4f40d951
MD
592 side_arg_list(),
593 side_arg_list(
808bd9bf
MD
594 side_arg_dynamic_field("a_true", side_arg_dynamic_bool(55, side_attr_list())),
595 side_arg_dynamic_field("b_true", side_arg_dynamic_bool(-4, side_attr_list())),
596 side_arg_dynamic_field("c_false", side_arg_dynamic_bool(0, side_attr_list())),
597 side_arg_dynamic_field("d_true", side_arg_dynamic_bool(256, side_attr_list())),
8d20e708
MD
598 ),
599 side_attr_list()
4f40d951
MD
600 );
601}
602
89747802 603side_static_event(my_provider_event_dynamic_vla_visitor,
8ceca0cd
MD
604 "myprovider", "mydynamicvlavisitor", SIDE_LOGLEVEL_DEBUG,
605 side_field_list(
66de373e 606 side_field_dynamic("dynamic"),
399c836b
MD
607 ),
608 side_attr_list()
8ceca0cd
MD
609);
610
611struct app_dynamic_vla_visitor_ctx {
612 const uint32_t *ptr;
613 uint32_t length;
614};
615
616static
6a744a79 617enum side_visitor_status test_dynamic_vla_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx)
8ceca0cd
MD
618{
619 struct app_dynamic_vla_visitor_ctx *ctx = (struct app_dynamic_vla_visitor_ctx *) _ctx;
620 uint32_t length = ctx->length, i;
621
622 for (i = 0; i < length; i++) {
e623c6a0 623 const struct side_arg elem = side_arg_dynamic_u32(ctx->ptr[i], side_attr_list());
8ceca0cd
MD
624 if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK)
625 return SIDE_VISITOR_STATUS_ERROR;
626 }
627 return SIDE_VISITOR_STATUS_OK;
628}
629
630static uint32_t testarray_dynamic_vla[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
631
632static
633void test_dynamic_vla_with_visitor(void)
634{
d5cdb129 635 side_event_cond(my_provider_event_dynamic_vla_visitor) {
8ceca0cd
MD
636 struct app_dynamic_vla_visitor_ctx ctx = {
637 .ptr = testarray_dynamic_vla,
638 .length = SIDE_ARRAY_SIZE(testarray_dynamic_vla),
639 };
d5cdb129 640 side_event_call(my_provider_event_dynamic_vla_visitor,
8ceca0cd 641 side_arg_list(
66de373e 642 side_arg_dynamic_vla_visitor(test_dynamic_vla_visitor, &ctx, side_attr_list())
8ceca0cd
MD
643 )
644 );
645 }
646}
647
89747802 648side_static_event(my_provider_event_dynamic_struct_visitor,
2b359235
MD
649 "myprovider", "mydynamicstructvisitor", SIDE_LOGLEVEL_DEBUG,
650 side_field_list(
66de373e 651 side_field_dynamic("dynamic"),
399c836b
MD
652 ),
653 side_attr_list()
2b359235
MD
654);
655
656struct struct_visitor_pair {
657 const char *name;
658 uint32_t value;
659};
660
661struct app_dynamic_struct_visitor_ctx {
662 const struct struct_visitor_pair *ptr;
663 uint32_t length;
664};
665
666static
667enum side_visitor_status test_dynamic_struct_visitor(const struct side_tracer_dynamic_struct_visitor_ctx *tracer_ctx, void *_ctx)
668{
669 struct app_dynamic_struct_visitor_ctx *ctx = (struct app_dynamic_struct_visitor_ctx *) _ctx;
670 uint32_t length = ctx->length, i;
671
672 for (i = 0; i < length; i++) {
0c7abe2b 673 struct side_arg_dynamic_field dynamic_field = {
2b359235 674 .field_name = ctx->ptr[i].name,
e623c6a0 675 .elem = side_arg_dynamic_u32(ctx->ptr[i].value, side_attr_list()),
2b359235
MD
676 };
677 if (tracer_ctx->write_field(tracer_ctx, &dynamic_field) != SIDE_VISITOR_STATUS_OK)
678 return SIDE_VISITOR_STATUS_ERROR;
679 }
680 return SIDE_VISITOR_STATUS_OK;
681}
682
683static struct struct_visitor_pair testarray_dynamic_struct[] = {
684 { "a", 1, },
685 { "b", 2, },
686 { "c", 3, },
687 { "d", 4, },
688};
689
690static
691void test_dynamic_struct_with_visitor(void)
692{
d5cdb129 693 side_event_cond(my_provider_event_dynamic_struct_visitor) {
2b359235
MD
694 struct app_dynamic_struct_visitor_ctx ctx = {
695 .ptr = testarray_dynamic_struct,
696 .length = SIDE_ARRAY_SIZE(testarray_dynamic_struct),
697 };
d5cdb129 698 side_event_call(my_provider_event_dynamic_struct_visitor,
2b359235 699 side_arg_list(
66de373e 700 side_arg_dynamic_struct_visitor(test_dynamic_struct_visitor, &ctx, side_attr_list())
2b359235
MD
701 )
702 );
703 }
704}
705
89747802 706side_static_event(my_provider_event_user_attribute, "myprovider", "myevent_user_attribute", SIDE_LOGLEVEL_DEBUG,
65010f43 707 side_field_list(
485b800a
MD
708 side_field_u32("abc", side_attr_list()),
709 side_field_s64("def", side_attr_list()),
399c836b
MD
710 ),
711 side_attr_list(
bc3c89b3
MD
712 side_attr("user_attribute_a", side_attr_string("val1")),
713 side_attr("user_attribute_b", side_attr_string("val2")),
65010f43
MD
714 )
715);
716
717static
718void test_event_user_attribute(void)
719{
d5cdb129 720 side_event(my_provider_event_user_attribute, side_arg_list(side_arg_u32(1), side_arg_s64(2)));
65010f43
MD
721}
722
89747802 723side_static_event(my_provider_field_user_attribute, "myprovider", "myevent_field_attribute", SIDE_LOGLEVEL_DEBUG,
a848763d 724 side_field_list(
485b800a 725 side_field_u32("abc",
a848763d 726 side_attr_list(
bc3c89b3
MD
727 side_attr("user_attribute_a", side_attr_string("val1")),
728 side_attr("user_attribute_b", side_attr_u32(2)),
a848763d
MD
729 )
730 ),
485b800a 731 side_field_s64("def",
a848763d 732 side_attr_list(
bc3c89b3
MD
733 side_attr("user_attribute_c", side_attr_string("val3")),
734 side_attr("user_attribute_d", side_attr_s64(-5)),
a848763d
MD
735 )
736 ),
737 ),
738 side_attr_list()
739);
740
741static
742void test_field_user_attribute(void)
743{
d5cdb129 744 side_event(my_provider_field_user_attribute, side_arg_list(side_arg_u32(1), side_arg_s64(2)));
a848763d
MD
745}
746
89747802 747side_static_event_variadic(my_provider_event_variadic_attr,
808bd9bf
MD
748 "myprovider", "myvariadiceventattr", SIDE_LOGLEVEL_DEBUG,
749 side_field_list(),
750 side_attr_list()
751);
752
753static
754void test_variadic_attr(void)
755{
d5cdb129 756 side_event_variadic(my_provider_event_variadic_attr,
808bd9bf
MD
757 side_arg_list(),
758 side_arg_list(
759 side_arg_dynamic_field("a",
760 side_arg_dynamic_u32(55,
761 side_attr_list(
bc3c89b3
MD
762 side_attr("user_attribute_c", side_attr_string("valX")),
763 side_attr("user_attribute_d", side_attr_u8(55)),
808bd9bf
MD
764 )
765 )
766 ),
767 side_arg_dynamic_field("b",
768 side_arg_dynamic_s8(-4,
769 side_attr_list(
bc3c89b3
MD
770 side_attr("X", side_attr_u8(1)),
771 side_attr("Y", side_attr_s8(2)),
808bd9bf
MD
772 )
773 )
774 ),
8d20e708
MD
775 ),
776 side_attr_list()
808bd9bf
MD
777 );
778}
779
89747802 780side_static_event_variadic(my_provider_event_variadic_vla_attr,
808bd9bf
MD
781 "myprovider", "myvariadiceventvlaattr", SIDE_LOGLEVEL_DEBUG,
782 side_field_list(),
783 side_attr_list()
784);
785
786static
787void test_variadic_vla_attr(void)
788{
789 side_arg_dynamic_define_vec(myvla,
790 side_arg_list(
791 side_arg_dynamic_u32(1,
792 side_attr_list(
bc3c89b3
MD
793 side_attr("Z", side_attr_u8(0)),
794 side_attr("A", side_attr_u8(123)),
808bd9bf
MD
795 )
796 ),
797 side_arg_dynamic_u32(2, side_attr_list()),
798 side_arg_dynamic_u32(3, side_attr_list()),
8d20e708
MD
799 ),
800 side_attr_list(
801 side_attr("X", side_attr_u8(1)),
802 side_attr("Y", side_attr_u8(2)),
808bd9bf
MD
803 )
804 );
d5cdb129 805 side_event_variadic(my_provider_event_variadic_vla_attr,
808bd9bf
MD
806 side_arg_list(),
807 side_arg_list(
8d20e708
MD
808 side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla)),
809 ),
810 side_attr_list()
808bd9bf
MD
811 );
812}
813
89747802 814side_static_event_variadic(my_provider_event_variadic_struct_attr,
808bd9bf
MD
815 "myprovider", "myvariadiceventstructattr", SIDE_LOGLEVEL_DEBUG,
816 side_field_list(),
817 side_attr_list()
818);
819
820static
821void test_variadic_struct_attr(void)
822{
d5cdb129 823 side_event_cond(my_provider_event_variadic_struct_attr) {
808bd9bf
MD
824 side_arg_dynamic_define_struct(mystruct,
825 side_arg_list(
826 side_arg_dynamic_field("a",
827 side_arg_dynamic_u32(43,
828 side_attr_list(
bc3c89b3 829 side_attr("A", side_attr_bool(true)),
808bd9bf
MD
830 )
831 )
832 ),
833 side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())),
8d20e708
MD
834 ),
835 side_attr_list(
836 side_attr("X", side_attr_u8(1)),
837 side_attr("Y", side_attr_u8(2)),
808bd9bf
MD
838 )
839 );
d5cdb129 840 side_event_call_variadic(my_provider_event_variadic_struct_attr,
808bd9bf
MD
841 side_arg_list(),
842 side_arg_list(
8d20e708
MD
843 side_arg_dynamic_field("a", side_arg_dynamic_struct(&mystruct)),
844 ),
845 side_attr_list()
808bd9bf
MD
846 );
847 }
848}
849
89747802 850side_static_event(my_provider_event_float, "myprovider", "myeventfloat", SIDE_LOGLEVEL_DEBUG,
fb25b355
MD
851 side_field_list(
852#if __HAVE_FLOAT16
485b800a 853 side_field_float_binary16("binary16", side_attr_list()),
8bdd5c12
MD
854 side_field_float_binary16_le("binary16_le", side_attr_list()),
855 side_field_float_binary16_be("binary16_be", side_attr_list()),
fb25b355
MD
856#endif
857#if __HAVE_FLOAT32
485b800a 858 side_field_float_binary32("binary32", side_attr_list()),
8bdd5c12
MD
859 side_field_float_binary32_le("binary32_le", side_attr_list()),
860 side_field_float_binary32_be("binary32_be", side_attr_list()),
fb25b355
MD
861#endif
862#if __HAVE_FLOAT64
485b800a 863 side_field_float_binary64("binary64", side_attr_list()),
8bdd5c12
MD
864 side_field_float_binary64_le("binary64_le", side_attr_list()),
865 side_field_float_binary64_be("binary64_be", side_attr_list()),
fb25b355
MD
866#endif
867#if __HAVE_FLOAT128
485b800a 868 side_field_float_binary128("binary128", side_attr_list()),
8bdd5c12
MD
869 side_field_float_binary128_le("binary128_le", side_attr_list()),
870 side_field_float_binary128_be("binary128_be", side_attr_list()),
fb25b355
MD
871#endif
872 ),
873 side_attr_list()
874);
875
876static
877void test_float(void)
878{
8bdd5c12
MD
879#if __HAVE_FLOAT16
880 union {
881 _Float16 f;
882 uint16_t u;
883 } float16 = {
884 .f = 1.1,
885 };
886#endif
887#if __HAVE_FLOAT32
888 union {
889 _Float32 f;
890 uint32_t u;
891 } float32 = {
892 .f = 2.2,
893 };
894#endif
895#if __HAVE_FLOAT64
896 union {
897 _Float64 f;
898 uint64_t u;
899 } float64 = {
900 .f = 3.3,
901 };
902#endif
903#if __HAVE_FLOAT128
904 union {
905 _Float128 f;
906 char arr[16];
907 } float128 = {
908 .f = 4.4,
909 };
910#endif
911
912#if __HAVE_FLOAT16
913 float16.u = side_bswap_16(float16.u);
914#endif
915#if __HAVE_FLOAT32
916 float32.u = side_bswap_32(float32.u);
917#endif
918#if __HAVE_FLOAT64
919 float64.u = side_bswap_64(float64.u);
920#endif
921#if __HAVE_FLOAT128
922 side_bswap_128p(float128.arr);
923#endif
924
d5cdb129 925 side_event(my_provider_event_float,
fb25b355
MD
926 side_arg_list(
927#if __HAVE_FLOAT16
928 side_arg_float_binary16(1.1),
8bdd5c12
MD
929# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
930 side_arg_float_binary16(1.1),
931 side_arg_float_binary16(float16.f),
932# else
933 side_arg_float_binary16(float16.f),
934 side_arg_float_binary16(1.1),
935# endif
fb25b355
MD
936#endif
937#if __HAVE_FLOAT32
938 side_arg_float_binary32(2.2),
8bdd5c12
MD
939# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
940 side_arg_float_binary32(2.2),
941 side_arg_float_binary32(float32.f),
942# else
943 side_arg_float_binary32(float32.f),
944 side_arg_float_binary32(2.2),
945# endif
fb25b355
MD
946#endif
947#if __HAVE_FLOAT64
948 side_arg_float_binary64(3.3),
8bdd5c12
MD
949# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
950 side_arg_float_binary64(3.3),
951 side_arg_float_binary64(float64.f),
952# else
953 side_arg_float_binary64(float64.f),
954 side_arg_float_binary64(3.3),
955# endif
fb25b355
MD
956#endif
957#if __HAVE_FLOAT128
958 side_arg_float_binary128(4.4),
8bdd5c12
MD
959# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
960 side_arg_float_binary128(4.4),
961 side_arg_float_binary128(float128.f),
962# else
963 side_arg_float_binary128(float128.f),
964 side_arg_float_binary128(4.4),
965# endif
fb25b355
MD
966#endif
967 )
968 );
969}
970
89747802 971side_static_event_variadic(my_provider_event_variadic_float,
fb25b355
MD
972 "myprovider", "myvariadicfloat", SIDE_LOGLEVEL_DEBUG,
973 side_field_list(),
974 side_attr_list()
975);
976
977static
978void test_variadic_float(void)
979{
8bdd5c12
MD
980#if __HAVE_FLOAT16
981 union {
982 _Float16 f;
983 uint16_t u;
984 } float16 = {
985 .f = 1.1,
986 };
987#endif
988#if __HAVE_FLOAT32
989 union {
990 _Float32 f;
991 uint32_t u;
992 } float32 = {
993 .f = 2.2,
994 };
995#endif
996#if __HAVE_FLOAT64
997 union {
998 _Float64 f;
999 uint64_t u;
1000 } float64 = {
1001 .f = 3.3,
1002 };
1003#endif
1004#if __HAVE_FLOAT128
1005 union {
1006 _Float128 f;
1007 char arr[16];
1008 } float128 = {
1009 .f = 4.4,
1010 };
1011#endif
1012
1013#if __HAVE_FLOAT16
1014 float16.u = side_bswap_16(float16.u);
1015#endif
1016#if __HAVE_FLOAT32
1017 float32.u = side_bswap_32(float32.u);
1018#endif
1019#if __HAVE_FLOAT64
1020 float64.u = side_bswap_64(float64.u);
1021#endif
1022#if __HAVE_FLOAT128
1023 side_bswap_128p(float128.arr);
1024#endif
1025
d5cdb129 1026 side_event_variadic(my_provider_event_variadic_float,
fb25b355
MD
1027 side_arg_list(),
1028 side_arg_list(
1029#if __HAVE_FLOAT16
8bdd5c12
MD
1030 side_arg_dynamic_field("binary16", side_arg_dynamic_float_binary16(1.1, side_attr_list())),
1031# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1032 side_arg_dynamic_field("binary16_le", side_arg_dynamic_float_binary16_le(1.1, side_attr_list())),
1033 side_arg_dynamic_field("binary16_be", side_arg_dynamic_float_binary16_be(float16.f, side_attr_list())),
1034# else
1035 side_arg_dynamic_field("binary16_le", side_arg_dynamic_float_binary16_le(float16.f, side_attr_list())),
1036 side_arg_dynamic_field("binary16_be", side_arg_dynamic_float_binary16_be(1.1, side_attr_list())),
1037# endif
fb25b355
MD
1038#endif
1039#if __HAVE_FLOAT32
8bdd5c12
MD
1040 side_arg_dynamic_field("binary32", side_arg_dynamic_float_binary32(2.2, side_attr_list())),
1041# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1042 side_arg_dynamic_field("binary32_le", side_arg_dynamic_float_binary32_le(2.2, side_attr_list())),
1043 side_arg_dynamic_field("binary32_be", side_arg_dynamic_float_binary32_be(float32.f, side_attr_list())),
1044# else
1045 side_arg_dynamic_field("binary32_le", side_arg_dynamic_float_binary32_le(float32.f, side_attr_list())),
1046 side_arg_dynamic_field("binary32_be", side_arg_dynamic_float_binary32_be(2.2, side_attr_list())),
1047# endif
fb25b355
MD
1048#endif
1049#if __HAVE_FLOAT64
8bdd5c12
MD
1050 side_arg_dynamic_field("binary64", side_arg_dynamic_float_binary64(3.3, side_attr_list())),
1051# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1052 side_arg_dynamic_field("binary64_le", side_arg_dynamic_float_binary64_le(3.3, side_attr_list())),
1053 side_arg_dynamic_field("binary64_be", side_arg_dynamic_float_binary64_be(float64.f, side_attr_list())),
1054# else
1055 side_arg_dynamic_field("binary64_le", side_arg_dynamic_float_binary64_le(float64.f, side_attr_list())),
1056 side_arg_dynamic_field("binary64_be", side_arg_dynamic_float_binary64_be(3.3, side_attr_list())),
1057# endif
fb25b355
MD
1058#endif
1059#if __HAVE_FLOAT128
8bdd5c12
MD
1060 side_arg_dynamic_field("binary128", side_arg_dynamic_float_binary128(4.4, side_attr_list())),
1061# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1062 side_arg_dynamic_field("binary128_le", side_arg_dynamic_float_binary128_le(4.4, side_attr_list())),
1063 side_arg_dynamic_field("binary128_be", side_arg_dynamic_float_binary128_be(float128.f, side_attr_list())),
1064# else
1065 side_arg_dynamic_field("binary128_le", side_arg_dynamic_float_binary128_le(float128.f, side_attr_list())),
1066 side_arg_dynamic_field("binary128_be", side_arg_dynamic_float_binary128_be(4.4, side_attr_list())),
1067# endif
fb25b355 1068#endif
8d20e708
MD
1069 ),
1070 side_attr_list()
fb25b355
MD
1071 );
1072}
1073
79f677ba 1074static side_define_enum(myenum,
66cff328 1075 side_enum_mapping_list(
79f677ba
MD
1076 side_enum_mapping_range("one-ten", 1, 10),
1077 side_enum_mapping_range("100-200", 100, 200),
1078 side_enum_mapping_value("200", 200),
1079 side_enum_mapping_value("300", 300),
d4328528
MD
1080 ),
1081 side_attr_list()
79f677ba
MD
1082);
1083
89747802 1084side_static_event(my_provider_event_enum, "myprovider", "myeventenum", SIDE_LOGLEVEL_DEBUG,
79f677ba 1085 side_field_list(
f89c4ad1
MD
1086 side_field_enum("5", &myenum, side_elem(side_type_u32(side_attr_list()))),
1087 side_field_enum("400", &myenum, side_elem(side_type_u64(side_attr_list()))),
1088 side_field_enum("200", &myenum, side_elem(side_type_u8(side_attr_list()))),
1089 side_field_enum("-100", &myenum, side_elem(side_type_s8(side_attr_list()))),
8bdd5c12
MD
1090 side_field_enum("6_be", &myenum, side_elem(side_type_u32_be(side_attr_list()))),
1091 side_field_enum("6_le", &myenum, side_elem(side_type_u32_le(side_attr_list()))),
79f677ba
MD
1092 ),
1093 side_attr_list()
1094);
1095
1096static
1097void test_enum(void)
1098{
d5cdb129 1099 side_event(my_provider_event_enum,
79f677ba 1100 side_arg_list(
d8be25de
MD
1101 side_arg_u32(5),
1102 side_arg_u64(400),
1103 side_arg_u8(200),
1104 side_arg_s8(-100),
8bdd5c12
MD
1105#if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
1106 side_arg_u32(side_bswap_32(6)),
1107 side_arg_u32(6),
1108#else
1109 side_arg_u32(side_bswap_32(6)),
1110 side_arg_u32(6),
1111#endif
79f677ba
MD
1112 )
1113 );
1114}
1115
ea32e5fc 1116/* A bitmap enum maps bits to labels. */
66cff328
MD
1117static side_define_enum_bitmap(myenum_bitmap,
1118 side_enum_bitmap_mapping_list(
1119 side_enum_bitmap_mapping_value("0", 0),
1120 side_enum_bitmap_mapping_range("1-2", 1, 2),
1121 side_enum_bitmap_mapping_range("2-4", 2, 4),
1122 side_enum_bitmap_mapping_value("3", 3),
1123 side_enum_bitmap_mapping_value("30", 30),
1124 side_enum_bitmap_mapping_value("63", 63),
af6aa6e1
MD
1125 side_enum_bitmap_mapping_range("158-160", 158, 160),
1126 side_enum_bitmap_mapping_value("159", 159),
1127 side_enum_bitmap_mapping_range("500-700", 500, 700),
d4328528
MD
1128 ),
1129 side_attr_list()
ea32e5fc
MD
1130);
1131
89747802 1132side_static_event(my_provider_event_enum_bitmap, "myprovider", "myeventenumbitmap", SIDE_LOGLEVEL_DEBUG,
ea32e5fc 1133 side_field_list(
f89c4ad1
MD
1134 side_field_enum_bitmap("bit_0", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))),
1135 side_field_enum_bitmap("bit_1", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))),
1136 side_field_enum_bitmap("bit_2", &myenum_bitmap, side_elem(side_type_u8(side_attr_list()))),
1137 side_field_enum_bitmap("bit_3", &myenum_bitmap, side_elem(side_type_u8(side_attr_list()))),
1138 side_field_enum_bitmap("bit_30", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))),
1139 side_field_enum_bitmap("bit_31", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))),
1140 side_field_enum_bitmap("bit_63", &myenum_bitmap, side_elem(side_type_u64(side_attr_list()))),
1141 side_field_enum_bitmap("bits_1+63", &myenum_bitmap, side_elem(side_type_u64(side_attr_list()))),
4cc2880b 1142 side_field_enum_bitmap("byte_bit_2", &myenum_bitmap, side_elem(side_type_byte(side_attr_list()))),
f89c4ad1
MD
1143 side_field_enum_bitmap("bit_159", &myenum_bitmap,
1144 side_elem(side_type_array(side_elem(side_type_u32(side_attr_list())), 5, side_attr_list()))),
1145 side_field_enum_bitmap("bit_159", &myenum_bitmap,
1146 side_elem(side_type_vla(side_elem(side_type_u32(side_attr_list())), side_attr_list()))),
8bdd5c12
MD
1147 side_field_enum_bitmap("bit_2_be", &myenum_bitmap, side_elem(side_type_u32_be(side_attr_list()))),
1148 side_field_enum_bitmap("bit_2_le", &myenum_bitmap, side_elem(side_type_u32_le(side_attr_list()))),
ea32e5fc
MD
1149 ),
1150 side_attr_list()
1151);
1152
1153static
1154void test_enum_bitmap(void)
1155{
af6aa6e1
MD
1156 side_event_cond(my_provider_event_enum_bitmap) {
1157 side_arg_define_vec(myarray,
1158 side_arg_list(
1159 side_arg_u32(0),
1160 side_arg_u32(0),
1161 side_arg_u32(0),
1162 side_arg_u32(0),
1163 side_arg_u32(0x80000000), /* bit 159 */
1164 )
1165 );
1166 side_event_call(my_provider_event_enum_bitmap,
1167 side_arg_list(
44abda1a
MD
1168 side_arg_u32(1U << 0),
1169 side_arg_u32(1U << 1),
1170 side_arg_u8(1U << 2),
1171 side_arg_u8(1U << 3),
1172 side_arg_u32(1U << 30),
1173 side_arg_u32(1U << 31),
bab5d6e4
MD
1174 side_arg_u64(1ULL << 63),
1175 side_arg_u64((1ULL << 1) | (1ULL << 63)),
44abda1a 1176 side_arg_byte(1U << 2),
bab5d6e4
MD
1177 side_arg_array(&myarray),
1178 side_arg_vla(&myarray),
8bdd5c12 1179#if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
44abda1a
MD
1180 side_arg_u32(side_bswap_32(1U << 2)),
1181 side_arg_u32(1U << 2),
8bdd5c12
MD
1182#else
1183 side_arg_u32(0x06000000),
44abda1a 1184 side_arg_u32(side_bswap_32(1U << 2)),
8bdd5c12 1185#endif
af6aa6e1
MD
1186 )
1187 );
1188 }
ea32e5fc
MD
1189}
1190
89747802 1191side_static_event_variadic(my_provider_event_blob, "myprovider", "myeventblob", SIDE_LOGLEVEL_DEBUG,
7aec0d09 1192 side_field_list(
f7653b43
MD
1193 side_field_byte("blobfield", side_attr_list()),
1194 side_field_array("arrayblob", side_elem(side_type_byte(side_attr_list())), 3, side_attr_list()),
7aec0d09
MD
1195 ),
1196 side_attr_list()
1197);
1198
1199static
1200void test_blob(void)
1201{
d5cdb129 1202 side_event_cond(my_provider_event_blob) {
f7653b43 1203 side_arg_define_vec(myarray, side_arg_list(side_arg_byte(1), side_arg_byte(2), side_arg_byte(3)));
199e7aa9
MD
1204 side_arg_dynamic_define_vec(myvla,
1205 side_arg_list(
f7653b43
MD
1206 side_arg_dynamic_byte(0x22, side_attr_list()),
1207 side_arg_dynamic_byte(0x33, side_attr_list()),
8d20e708
MD
1208 ),
1209 side_attr_list()
199e7aa9 1210 );
d5cdb129 1211 side_event_call_variadic(my_provider_event_blob,
7aec0d09 1212 side_arg_list(
f7653b43 1213 side_arg_byte(0x55),
7aec0d09 1214 side_arg_array(&myarray),
199e7aa9
MD
1215 ),
1216 side_arg_list(
1217 side_arg_dynamic_field("varblobfield",
f7653b43 1218 side_arg_dynamic_byte(0x55, side_attr_list())
199e7aa9 1219 ),
8d20e708
MD
1220 side_arg_dynamic_field("varblobvla", side_arg_dynamic_vla(&myvla)),
1221 ),
1222 side_attr_list()
7aec0d09
MD
1223 );
1224 }
1225}
ea32e5fc 1226
89747802 1227side_static_event_variadic(my_provider_event_format_string,
71aa8975
MD
1228 "myprovider", "myeventformatstring", SIDE_LOGLEVEL_DEBUG,
1229 side_field_list(
1230 side_field_string("fmt", side_attr_list()),
1231 ),
1232 side_attr_list(
1233 side_attr("lang.c.format_string", side_attr_bool(true)),
1234 )
1235);
1236
1237static
1238void test_fmt_string(void)
1239{
71aa8975
MD
1240 side_event_cond(my_provider_event_format_string) {
1241 side_arg_dynamic_define_vec(args,
1242 side_arg_list(
1243 side_arg_dynamic_string("blah", side_attr_list()),
1244 side_arg_dynamic_s32(123, side_attr_list()),
1245 ),
1246 side_attr_list()
1247 );
1248 side_event_call_variadic(my_provider_event_format_string,
1249 side_arg_list(
1250 side_arg_string("This is a formatted string with str: %s int: %d"),
1251 ),
1252 side_arg_list(
1253 side_arg_dynamic_field("arguments", side_arg_dynamic_vla(&args)),
1254 ),
1255 side_attr_list()
1256 );
1257 }
1258}
1259
8bdd5c12
MD
1260side_static_event_variadic(my_provider_event_endian, "myprovider", "myevent_endian", SIDE_LOGLEVEL_DEBUG,
1261 side_field_list(
1262 side_field_u16_le("u16_le", side_attr_list()),
1263 side_field_u32_le("u32_le", side_attr_list()),
1264 side_field_u64_le("u64_le", side_attr_list()),
1265 side_field_s16_le("s16_le", side_attr_list()),
1266 side_field_s32_le("s32_le", side_attr_list()),
1267 side_field_s64_le("s64_le", side_attr_list()),
1268 side_field_u16_be("u16_be", side_attr_list()),
1269 side_field_u32_be("u32_be", side_attr_list()),
1270 side_field_u64_be("u64_be", side_attr_list()),
1271 side_field_s16_be("s16_be", side_attr_list()),
1272 side_field_s32_be("s32_be", side_attr_list()),
1273 side_field_s64_be("s64_be", side_attr_list()),
1274 ),
1275 side_attr_list()
1276);
1277
1278static
1279void test_endian(void)
1280{
1281 side_event_variadic(my_provider_event_endian,
1282 side_arg_list(
1283#if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
1284 side_arg_u16(1),
1285 side_arg_u32(1),
1286 side_arg_u64(1),
1287 side_arg_s16(1),
1288 side_arg_s32(1),
1289 side_arg_s64(1),
1290 side_arg_u16(side_bswap_16(1)),
1291 side_arg_u32(side_bswap_32(1)),
1292 side_arg_u64(side_bswap_64(1)),
1293 side_arg_s16(side_bswap_16(1)),
1294 side_arg_s32(side_bswap_32(1)),
1295 side_arg_s64(side_bswap_64(1)),
1296#else
1297 side_arg_u16(side_bswap_16(1)),
1298 side_arg_u32(side_bswap_32(1)),
1299 side_arg_u64(side_bswap_64(1)),
1300 side_arg_s16(side_bswap_16(1)),
1301 side_arg_s32(side_bswap_32(1)),
1302 side_arg_s64(side_bswap_64(1)),
1303 side_arg_u16(1),
1304 side_arg_u32(1),
1305 side_arg_u64(1),
1306 side_arg_s16(1),
1307 side_arg_s32(1),
1308 side_arg_s64(1),
1309#endif
1310 ),
1311 side_arg_list(
1312#if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
1313 side_arg_dynamic_field("u16_le", side_arg_dynamic_u16_le(1, side_attr_list())),
1314 side_arg_dynamic_field("u32_le", side_arg_dynamic_u32_le(1, side_attr_list())),
1315 side_arg_dynamic_field("u64_le", side_arg_dynamic_u64_le(1, side_attr_list())),
1316 side_arg_dynamic_field("s16_le", side_arg_dynamic_s16_le(1, side_attr_list())),
1317 side_arg_dynamic_field("s32_le", side_arg_dynamic_s32_le(1, side_attr_list())),
1318 side_arg_dynamic_field("s64_le", side_arg_dynamic_s64_le(1, side_attr_list())),
1319 side_arg_dynamic_field("u16_be", side_arg_dynamic_u16_be(side_bswap_16(1), side_attr_list())),
1320 side_arg_dynamic_field("u32_be", side_arg_dynamic_u32_be(side_bswap_32(1), side_attr_list())),
1321 side_arg_dynamic_field("u64_be", side_arg_dynamic_u64_be(side_bswap_64(1), side_attr_list())),
1322 side_arg_dynamic_field("s16_be", side_arg_dynamic_s16_be(side_bswap_16(1), side_attr_list())),
1323 side_arg_dynamic_field("s32_be", side_arg_dynamic_s32_be(side_bswap_32(1), side_attr_list())),
1324 side_arg_dynamic_field("s64_be", side_arg_dynamic_s64_be(side_bswap_64(1), side_attr_list())),
1325#else
1326 side_arg_dynamic_field("u16_le", side_arg_dynamic_u16_le(side_bswap_16(1), side_attr_list())),
1327 side_arg_dynamic_field("u32_le", side_arg_dynamic_u32_le(side_bswap_32(1), side_attr_list())),
1328 side_arg_dynamic_field("u64_le", side_arg_dynamic_u64_le(side_bswap_64(1), side_attr_list())),
1329 side_arg_dynamic_field("s16_le", side_arg_dynamic_s16_le(side_bswap_16(1), side_attr_list())),
1330 side_arg_dynamic_field("s32_le", side_arg_dynamic_s32_le(side_bswap_32(1), side_attr_list())),
1331 side_arg_dynamic_field("s64_le", side_arg_dynamic_s64_le(side_bswap_64(1), side_attr_list())),
1332 side_arg_dynamic_field("u16_be", side_arg_dynamic_u16_be(1, side_attr_list())),
1333 side_arg_dynamic_field("u32_be", side_arg_dynamic_u32_be(1, side_attr_list())),
1334 side_arg_dynamic_field("u64_be", side_arg_dynamic_u64_be(1, side_attr_list())),
1335 side_arg_dynamic_field("s16_be", side_arg_dynamic_s16_be(1, side_attr_list())),
1336 side_arg_dynamic_field("s32_be", side_arg_dynamic_s32_be(1, side_attr_list())),
1337 side_arg_dynamic_field("s64_be", side_arg_dynamic_s64_be(1, side_attr_list())),
1338#endif
1339 ),
1340 side_attr_list()
1341 );
1342}
1343
1d9c515c
MD
1344side_static_event(my_provider_event_base, "myprovider", "myevent_base", SIDE_LOGLEVEL_DEBUG,
1345 side_field_list(
1346 side_field_u8("u8base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1347 side_field_u8("u8base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1348 side_field_u8("u8base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1349 side_field_u8("u8base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1350 side_field_u16("u16base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1351 side_field_u16("u16base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1352 side_field_u16("u16base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1353 side_field_u16("u16base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1354 side_field_u32("u32base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1355 side_field_u32("u32base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1356 side_field_u32("u32base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1357 side_field_u32("u32base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1358 side_field_u64("u64base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1359 side_field_u64("u64base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1360 side_field_u64("u64base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1361 side_field_u64("u64base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1362 side_field_s8("s8base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1363 side_field_s8("s8base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1364 side_field_s8("s8base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1365 side_field_s8("s8base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1366 side_field_s16("s16base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1367 side_field_s16("s16base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1368 side_field_s16("s16base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1369 side_field_s16("s16base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1370 side_field_s32("s32base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1371 side_field_s32("s32base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1372 side_field_s32("s32base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1373 side_field_s32("s32base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1374 side_field_s64("s64base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1375 side_field_s64("s64base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1376 side_field_s64("s64base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1377 side_field_s64("s64base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1378 ),
1379 side_attr_list()
1380);
1381
1382static
1383void test_base(void)
1384{
1385 side_event(my_provider_event_base,
1386 side_arg_list(
1387 side_arg_u8(55),
1388 side_arg_u8(55),
1389 side_arg_u8(55),
1390 side_arg_u8(55),
1391 side_arg_u16(55),
1392 side_arg_u16(55),
1393 side_arg_u16(55),
1394 side_arg_u16(55),
1395 side_arg_u32(55),
1396 side_arg_u32(55),
1397 side_arg_u32(55),
1398 side_arg_u32(55),
1399 side_arg_u64(55),
1400 side_arg_u64(55),
1401 side_arg_u64(55),
1402 side_arg_u64(55),
1403 side_arg_s8(-55),
1404 side_arg_s8(-55),
1405 side_arg_s8(-55),
1406 side_arg_s8(-55),
1407 side_arg_s16(-55),
1408 side_arg_s16(-55),
1409 side_arg_s16(-55),
1410 side_arg_s16(-55),
1411 side_arg_s32(-55),
1412 side_arg_s32(-55),
1413 side_arg_s32(-55),
1414 side_arg_s32(-55),
1415 side_arg_s64(-55),
1416 side_arg_s64(-55),
1417 side_arg_s64(-55),
1418 side_arg_s64(-55),
1419 )
1420 );
1421}
1422
7a1cb105
MD
1423struct test {
1424 uint32_t a;
1425 uint64_t b;
1426 uint8_t c;
1427 int32_t d;
1428 uint16_t e;
bc0b21eb
MD
1429 int8_t f;
1430 int16_t g;
1431 int32_t h;
1432 int64_t i;
1433 int64_t j;
1434 int64_t k;
c1723f3c 1435 uint64_t test;
7a1cb105
MD
1436};
1437
d41cb7ee 1438static side_define_struct(mystructgatherdef,
33956c71 1439 side_field_list(
d41cb7ee 1440 side_field_gather_unsigned_integer("a", offsetof(struct test, a),
8e87e437 1441 side_struct_field_sizeof_bit(struct test, a), 0,
84c04cc8 1442 side_struct_field_sizeof_bit(struct test, a), SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list()),
d41cb7ee 1443 side_field_gather_signed_integer("d", offsetof(struct test, d),
8e87e437 1444 side_struct_field_sizeof_bit(struct test, d), 0,
84c04cc8 1445 side_struct_field_sizeof_bit(struct test, d), SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list()),
d41cb7ee 1446 side_field_gather_unsigned_integer("e", offsetof(struct test, e),
8e87e437 1447 side_struct_field_sizeof_bit(struct test, e), 8, 4,
84c04cc8 1448 SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
d41cb7ee 1449 side_field_gather_signed_integer("f", offsetof(struct test, f),
bc0b21eb 1450 side_struct_field_sizeof_bit(struct test, f), 1, 4,
84c04cc8 1451 SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
d41cb7ee 1452 side_field_gather_signed_integer("g", offsetof(struct test, g),
bc0b21eb 1453 side_struct_field_sizeof_bit(struct test, g), 11, 4,
84c04cc8 1454 SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
d41cb7ee 1455 side_field_gather_signed_integer("h", offsetof(struct test, h),
bc0b21eb 1456 side_struct_field_sizeof_bit(struct test, h), 1, 31,
84c04cc8 1457 SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
d41cb7ee 1458 side_field_gather_signed_integer("i", offsetof(struct test, i),
bc0b21eb 1459 side_struct_field_sizeof_bit(struct test, i), 33, 20,
84c04cc8 1460 SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
d41cb7ee 1461 side_field_gather_signed_integer("j", offsetof(struct test, j),
bc0b21eb 1462 side_struct_field_sizeof_bit(struct test, j), 63, 1,
84c04cc8 1463 SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
d41cb7ee 1464 side_field_gather_signed_integer("k", offsetof(struct test, k),
bc0b21eb 1465 side_struct_field_sizeof_bit(struct test, k), 1, 63,
84c04cc8 1466 SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
d41cb7ee 1467 side_field_gather_unsigned_integer_le("test", offsetof(struct test, test),
c1723f3c 1468 side_struct_field_sizeof_bit(struct test, test), 0, 64,
84c04cc8 1469 SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
d41cb7ee 1470 side_field_gather_unsigned_integer_le("test_le", offsetof(struct test, test),
c1723f3c 1471 side_struct_field_sizeof_bit(struct test, test), 0, 64,
84c04cc8 1472 SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
d41cb7ee 1473 side_field_gather_unsigned_integer_be("test_be", offsetof(struct test, test),
c1723f3c 1474 side_struct_field_sizeof_bit(struct test, test), 0, 64,
84c04cc8 1475 SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
7a1cb105
MD
1476 ),
1477 side_attr_list()
1478);
1479
d41cb7ee 1480side_static_event(my_provider_event_structgather, "myprovider", "myeventstructgather", SIDE_LOGLEVEL_DEBUG,
7a1cb105 1481 side_field_list(
d41cb7ee 1482 side_field_gather_struct("structgather", &mystructgatherdef, 0, sizeof(struct test),
84c04cc8
MD
1483 SIDE_TYPE_GATHER_ACCESS_DIRECT),
1484 side_field_gather_signed_integer("intgather", 0, 32, 0, 32, SIDE_TYPE_GATHER_ACCESS_DIRECT,
33956c71 1485 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
13d97eca 1486#if __HAVE_FLOAT32
84c04cc8 1487 side_field_gather_float("f32", 0, 32, SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list()),
13d97eca 1488#endif
7a1cb105
MD
1489 ),
1490 side_attr_list()
1491);
1492
1493static
d41cb7ee 1494void test_struct_gather(void)
7a1cb105 1495{
d41cb7ee 1496 side_event_cond(my_provider_event_structgather) {
7a1cb105
MD
1497 struct test mystruct = {
1498 .a = 55,
1499 .b = 123,
1500 .c = 2,
1501 .d = -55,
1502 .e = 0xABCD,
bc0b21eb
MD
1503 .f = -1,
1504 .g = -1,
1505 .h = -1,
1506 .i = -1,
1507 .j = -1,
1508 .k = -1,
c1723f3c 1509 .test = 0xFF,
7a1cb105 1510 };
33956c71 1511 int32_t val = -66;
13d97eca
MD
1512#if __HAVE_FLOAT32
1513 _Float32 f32 = 1.1;
1514#endif
d41cb7ee 1515 side_event_call(my_provider_event_structgather,
33956c71 1516 side_arg_list(
d41cb7ee
MD
1517 side_arg_gather_struct(&mystruct),
1518 side_arg_gather_signed_integer(&val),
13d97eca 1519#if __HAVE_FLOAT32
d41cb7ee 1520 side_arg_gather_float(&f32),
13d97eca 1521#endif
33956c71
MD
1522 )
1523 );
7a1cb105
MD
1524 }
1525}
1526
7394a8b8
MD
1527struct testnest2 {
1528 uint8_t c;
1529};
1530
1531struct testnest1 {
1532 uint64_t b;
1533 struct testnest2 *nest;
1534};
1535
1536struct testnest0 {
1537 uint32_t a;
1538 struct testnest1 *nest;
1539};
1540
d41cb7ee 1541static side_define_struct(mystructgathernest2,
7394a8b8 1542 side_field_list(
d41cb7ee 1543 side_field_gather_unsigned_integer("c", offsetof(struct testnest2, c),
7394a8b8 1544 side_struct_field_sizeof_bit(struct testnest2, c), 0,
84c04cc8 1545 side_struct_field_sizeof_bit(struct testnest2, c), SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list()),
7394a8b8
MD
1546 ),
1547 side_attr_list()
1548);
1549
d41cb7ee 1550static side_define_struct(mystructgathernest1,
7394a8b8 1551 side_field_list(
d41cb7ee 1552 side_field_gather_unsigned_integer("b", offsetof(struct testnest1, b),
7394a8b8 1553 side_struct_field_sizeof_bit(struct testnest1, b), 0,
84c04cc8 1554 side_struct_field_sizeof_bit(struct testnest1, b), SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list()),
d41cb7ee 1555 side_field_gather_struct("nest2", &mystructgathernest2,
dd7947bf 1556 offsetof(struct testnest1, nest), sizeof(struct testnest2),
d41cb7ee 1557 SIDE_TYPE_GATHER_ACCESS_POINTER),
7394a8b8
MD
1558 ),
1559 side_attr_list()
1560);
1561
d41cb7ee 1562static side_define_struct(mystructgathernest0,
7394a8b8 1563 side_field_list(
d41cb7ee 1564 side_field_gather_unsigned_integer("a", offsetof(struct testnest0, a),
7394a8b8 1565 side_struct_field_sizeof_bit(struct testnest0, a), 0,
84c04cc8 1566 side_struct_field_sizeof_bit(struct testnest0, a), SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list()),
d41cb7ee 1567 side_field_gather_struct("nest1", &mystructgathernest1,
dd7947bf 1568 offsetof(struct testnest0, nest), sizeof(struct testnest1),
d41cb7ee 1569 SIDE_TYPE_GATHER_ACCESS_POINTER),
7394a8b8
MD
1570 ),
1571 side_attr_list()
1572);
1573
d41cb7ee
MD
1574side_static_event(my_provider_event_structgather_nest,
1575 "myprovider", "myeventstructgathernest", SIDE_LOGLEVEL_DEBUG,
7394a8b8 1576 side_field_list(
d41cb7ee 1577 side_field_gather_struct("nest0", &mystructgathernest0, 0,
84c04cc8 1578 sizeof(struct testnest0), SIDE_TYPE_GATHER_ACCESS_DIRECT),
7394a8b8
MD
1579 ),
1580 side_attr_list()
1581);
1582
1583static
d41cb7ee 1584void test_struct_gather_nest_ptr(void)
7394a8b8 1585{
d41cb7ee 1586 side_event_cond(my_provider_event_structgather_nest) {
7394a8b8
MD
1587 struct testnest2 mystruct2 = {
1588 .c = 77,
1589 };
1590 struct testnest1 mystruct1 = {
1591 .b = 66,
1592 .nest = &mystruct2,
1593 };
1594 struct testnest0 mystruct = {
1595 .a = 55,
1596 .nest = &mystruct1,
1597 };
d41cb7ee 1598 side_event_call(my_provider_event_structgather_nest,
7394a8b8 1599 side_arg_list(
d41cb7ee 1600 side_arg_gather_struct(&mystruct),
7394a8b8
MD
1601 )
1602 );
1603 }
1604}
1605
905f68e3
MD
1606struct testfloat {
1607#if __HAVE_FLOAT16
1608 _Float16 f16;
1609#endif
1610#if __HAVE_FLOAT32
1611 _Float32 f32;
1612#endif
1613#if __HAVE_FLOAT64
1614 _Float64 f64;
1615#endif
1616#if __HAVE_FLOAT128
1617 _Float128 f128;
1618#endif
1619};
1620
d41cb7ee 1621static side_define_struct(mystructgatherfloat,
905f68e3
MD
1622 side_field_list(
1623#if __HAVE_FLOAT16
d41cb7ee 1624 side_field_gather_float("f16", offsetof(struct testfloat, f16), 16,
84c04cc8 1625 SIDE_TYPE_GATHER_ACCESS_DIRECT,
905f68e3
MD
1626 side_attr_list()),
1627#endif
1628#if __HAVE_FLOAT32
d41cb7ee 1629 side_field_gather_float("f32", offsetof(struct testfloat, f32), 32,
84c04cc8 1630 SIDE_TYPE_GATHER_ACCESS_DIRECT,
905f68e3
MD
1631 side_attr_list()),
1632#endif
1633#if __HAVE_FLOAT64
d41cb7ee 1634 side_field_gather_float("f64", offsetof(struct testfloat, f64), 64,
84c04cc8 1635 SIDE_TYPE_GATHER_ACCESS_DIRECT,
905f68e3
MD
1636 side_attr_list()),
1637#endif
1638#if __HAVE_FLOAT128
d41cb7ee 1639 side_field_gather_float("f128", offsetof(struct testfloat, f128), 128,
84c04cc8 1640 SIDE_TYPE_GATHER_ACCESS_DIRECT,
905f68e3
MD
1641 side_attr_list()),
1642#endif
1643 ),
1644 side_attr_list()
1645);
1646
d41cb7ee
MD
1647side_static_event(my_provider_event_structgatherfloat,
1648 "myprovider", "myeventstructgatherfloat", SIDE_LOGLEVEL_DEBUG,
905f68e3 1649 side_field_list(
d41cb7ee 1650 side_field_gather_struct("structgatherfloat", &mystructgatherfloat, 0,
84c04cc8 1651 sizeof(struct testfloat), SIDE_TYPE_GATHER_ACCESS_DIRECT),
905f68e3
MD
1652 ),
1653 side_attr_list()
1654);
1655
1656static
d41cb7ee 1657void test_struct_gather_float(void)
905f68e3 1658{
d41cb7ee 1659 side_event_cond(my_provider_event_structgatherfloat) {
905f68e3
MD
1660 struct testfloat mystruct = {
1661#if __HAVE_FLOAT16
1662 .f16 = 1.1,
1663#endif
1664#if __HAVE_FLOAT32
1665 .f32 = 2.2,
1666#endif
1667#if __HAVE_FLOAT64
1668 .f64 = 3.3,
1669#endif
1670#if __HAVE_FLOAT128
1671 .f128 = 4.4,
1672#endif
1673 };
d41cb7ee 1674 side_event_call(my_provider_event_structgatherfloat,
905f68e3 1675 side_arg_list(
d41cb7ee 1676 side_arg_gather_struct(&mystruct),
905f68e3
MD
1677 )
1678 );
1679 }
1680}
1681
d41cb7ee 1682uint32_t mygatherarray[] = { 1, 2, 3, 4, 5 };
d9359cfa 1683
d41cb7ee 1684uint16_t mygatherarray2[] = { 6, 7, 8, 9 };
d9359cfa
MD
1685
1686struct testarray {
1687 int a;
1688 uint32_t *ptr;
1689};
1690
d41cb7ee 1691static side_define_struct(mystructgatherarray,
d9359cfa 1692 side_field_list(
d41cb7ee 1693 side_field_gather_array("array",
84c04cc8 1694 side_elem(side_type_gather_unsigned_integer(0, 32, 0, 32, SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list())),
d41cb7ee 1695 SIDE_ARRAY_SIZE(mygatherarray),
d9359cfa 1696 offsetof(struct testarray, ptr),
d41cb7ee 1697 SIDE_TYPE_GATHER_ACCESS_POINTER,
d9359cfa
MD
1698 side_attr_list()),
1699 ),
1700 side_attr_list()
1701);
1702
d41cb7ee
MD
1703side_static_event(my_provider_event_structgatherarray,
1704 "myprovider", "myeventstructgatherarray", SIDE_LOGLEVEL_DEBUG,
d9359cfa 1705 side_field_list(
d41cb7ee 1706 side_field_gather_struct("structgatherarray", &mystructgatherarray, 0,
84c04cc8 1707 sizeof(struct testarray), SIDE_TYPE_GATHER_ACCESS_DIRECT),
d41cb7ee 1708 side_field_gather_array("array2",
84c04cc8 1709 side_elem(side_type_gather_unsigned_integer(0, 16, 0, 16, SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list())),
d41cb7ee 1710 SIDE_ARRAY_SIZE(mygatherarray2), 0,
84c04cc8 1711 SIDE_TYPE_GATHER_ACCESS_DIRECT,
d9359cfa
MD
1712 side_attr_list()
1713 ),
1714 ),
1715 side_attr_list()
1716);
1717
1718static
d41cb7ee 1719void test_array_gather(void)
d9359cfa 1720{
d41cb7ee 1721 side_event_cond(my_provider_event_structgatherarray) {
d9359cfa
MD
1722 struct testarray mystruct = {
1723 .a = 55,
d41cb7ee 1724 .ptr = mygatherarray,
d9359cfa 1725 };
d41cb7ee 1726 side_event_call(my_provider_event_structgatherarray,
d9359cfa 1727 side_arg_list(
d41cb7ee
MD
1728 side_arg_gather_struct(&mystruct),
1729 side_arg_gather_array(&mygatherarray2),
d9359cfa
MD
1730 )
1731 );
1732 }
1733}
1734
dd7947bf 1735#define TESTSGNESTARRAY_LEN 4
d41cb7ee 1736struct testgatherstructnest1 {
dd7947bf
MD
1737 int b;
1738 int c[TESTSGNESTARRAY_LEN];
1739};
1740
d41cb7ee
MD
1741struct testgatherstructnest0 {
1742 struct testgatherstructnest1 nest;
1743 struct testgatherstructnest1 nestarray[2];
dd7947bf
MD
1744 int a;
1745};
1746
d41cb7ee 1747static side_define_struct(mystructgatherstructnest1,
dd7947bf 1748 side_field_list(
d41cb7ee
MD
1749 side_field_gather_signed_integer("b", offsetof(struct testgatherstructnest1, b),
1750 side_struct_field_sizeof_bit(struct testgatherstructnest1, b), 0,
1751 side_struct_field_sizeof_bit(struct testgatherstructnest1, b),
84c04cc8 1752 SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list()),
d41cb7ee 1753 side_field_gather_array("c",
dd7947bf 1754 side_elem(
d41cb7ee 1755 side_type_gather_signed_integer(0, 32, 0, 32,
84c04cc8 1756 SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list()),
dd7947bf
MD
1757 ),
1758 TESTSGNESTARRAY_LEN,
d41cb7ee 1759 offsetof(struct testgatherstructnest1, c),
84c04cc8 1760 SIDE_TYPE_GATHER_ACCESS_DIRECT,
dd7947bf
MD
1761 side_attr_list()),
1762 ),
1763 side_attr_list()
1764);
1765
d41cb7ee 1766static side_define_struct(mystructgatherstructnest0,
dd7947bf 1767 side_field_list(
d41cb7ee
MD
1768 side_field_gather_signed_integer("a", offsetof(struct testgatherstructnest0, a),
1769 side_struct_field_sizeof_bit(struct testgatherstructnest0, a), 0,
1770 side_struct_field_sizeof_bit(struct testgatherstructnest0, a),
84c04cc8 1771 SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list()),
d41cb7ee
MD
1772 side_field_gather_struct("structnest0", &mystructgatherstructnest1,
1773 offsetof(struct testgatherstructnest0, nest),
1774 sizeof(struct testgatherstructnest1),
84c04cc8 1775 SIDE_TYPE_GATHER_ACCESS_DIRECT),
d41cb7ee 1776 side_field_gather_array("nestarray",
dd7947bf 1777 side_elem(
d41cb7ee 1778 side_type_gather_struct(&mystructgatherstructnest1,
dd7947bf 1779 0,
d41cb7ee 1780 sizeof(struct testgatherstructnest1),
84c04cc8 1781 SIDE_TYPE_GATHER_ACCESS_DIRECT),
dd7947bf
MD
1782 ),
1783 2,
d41cb7ee 1784 offsetof(struct testgatherstructnest0, nestarray),
84c04cc8 1785 SIDE_TYPE_GATHER_ACCESS_DIRECT,
dd7947bf
MD
1786 side_attr_list()),
1787 ),
1788 side_attr_list()
1789);
1790
d41cb7ee
MD
1791side_static_event(my_provider_event_gatherstructnest,
1792 "myprovider", "myeventgatherstructnest", SIDE_LOGLEVEL_DEBUG,
dd7947bf 1793 side_field_list(
d41cb7ee 1794 side_field_gather_struct("structgather", &mystructgatherstructnest0, 0,
84c04cc8 1795 sizeof(struct testgatherstructnest0), SIDE_TYPE_GATHER_ACCESS_DIRECT),
dd7947bf
MD
1796 ),
1797 side_attr_list()
1798);
1799
1800static
d41cb7ee 1801void test_gather_structnest(void)
dd7947bf 1802{
d41cb7ee
MD
1803 side_event_cond(my_provider_event_gatherstructnest) {
1804 struct testgatherstructnest0 mystruct = {
dd7947bf
MD
1805 .nest = {
1806 .b = 66,
1807 .c = { 0, 1, 2, 3 },
1808 },
1809 .nestarray = {
1810 [0] = {
1811 .b = 77,
1812 .c = { 11, 12, 13, 14 },
1813 },
1814 [1] = {
1815 .b = 88,
1816 .c = { 15, 16, 17, 18 },
1817 },
1818 },
1819 .a = 55,
1820 };
d41cb7ee 1821 side_event_call(my_provider_event_gatherstructnest,
dd7947bf 1822 side_arg_list(
d41cb7ee 1823 side_arg_gather_struct(&mystruct),
dd7947bf
MD
1824 )
1825 );
1826 }
1827}
1828
d41cb7ee 1829uint32_t gathervla[] = { 1, 2, 3, 4 };
80429681 1830uint32_t gathervla2[] = { 5, 6, 7, 8, 9 };
65b8734a 1831
d41cb7ee 1832struct testgathervla {
65b8734a
MD
1833 int a;
1834 uint16_t len;
1835 uint32_t *p;
1836};
1837
d41cb7ee 1838static side_define_struct(mystructgathervla,
65b8734a 1839 side_field_list(
d41cb7ee
MD
1840 side_field_gather_signed_integer("a", offsetof(struct testgathervla, a),
1841 side_struct_field_sizeof_bit(struct testgathervla, a), 0,
1842 side_struct_field_sizeof_bit(struct testgathervla, a),
84c04cc8 1843 SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list()
65b8734a 1844 ),
d41cb7ee 1845 side_field_gather_vla("nestvla",
84c04cc8 1846 side_elem(side_type_gather_unsigned_integer(0, 32, 0, 32, SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list())),
d41cb7ee
MD
1847 offsetof(struct testgathervla, p),
1848 SIDE_TYPE_GATHER_ACCESS_POINTER,
1849 side_length(side_type_gather_unsigned_integer(offsetof(struct testgathervla, len),
84c04cc8 1850 16, 0, 16, SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list())),
65b8734a
MD
1851 side_attr_list()
1852 ),
1853 ),
1854 side_attr_list()
1855);
1856
d41cb7ee
MD
1857side_static_event(my_provider_event_gathervla,
1858 "myprovider", "myeventgathervla", SIDE_LOGLEVEL_DEBUG,
65b8734a 1859 side_field_list(
d41cb7ee 1860 side_field_gather_struct("structgathervla", &mystructgathervla, 0,
84c04cc8 1861 sizeof(struct testgathervla), SIDE_TYPE_GATHER_ACCESS_DIRECT),
80429681 1862 side_field_gather_vla("vla",
84c04cc8
MD
1863 side_elem(side_type_gather_unsigned_integer(0, 32, 0, 32, SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list())),
1864 0, SIDE_TYPE_GATHER_ACCESS_DIRECT,
1865 side_length(side_type_gather_unsigned_integer(0, 16, 0, 16, SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list())),
80429681
MD
1866 side_attr_list()
1867 ),
65b8734a
MD
1868 ),
1869 side_attr_list()
1870);
1871
1872static
d41cb7ee 1873void test_gather_vla(void)
65b8734a 1874{
d41cb7ee
MD
1875 side_event_cond(my_provider_event_gathervla) {
1876 struct testgathervla mystruct = {
65b8734a 1877 .a = 55,
d41cb7ee
MD
1878 .len = SIDE_ARRAY_SIZE(gathervla),
1879 .p = gathervla,
65b8734a 1880 };
80429681 1881 uint16_t vla2_len = 5;
d41cb7ee 1882 side_event_call(my_provider_event_gathervla,
65b8734a 1883 side_arg_list(
d41cb7ee 1884 side_arg_gather_struct(&mystruct),
80429681 1885 side_arg_gather_vla(gathervla2, &vla2_len),
65b8734a
MD
1886 )
1887 );
1888 }
1889}
1890
d41cb7ee 1891struct testgathervlaflex {
65b8734a
MD
1892 uint8_t len;
1893 uint32_t otherfield;
1894 uint64_t array[];
1895};
1896
d41cb7ee 1897static side_define_struct(mystructgathervlaflex,
65b8734a 1898 side_field_list(
d41cb7ee 1899 side_field_gather_vla("vlaflex",
84c04cc8 1900 side_elem(side_type_gather_unsigned_integer(0, 64, 0, 64, SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list())),
d41cb7ee 1901 offsetof(struct testgathervlaflex, array),
84c04cc8 1902 SIDE_TYPE_GATHER_ACCESS_DIRECT,
d41cb7ee 1903 side_length(side_type_gather_unsigned_integer(offsetof(struct testgathervlaflex, len),
84c04cc8 1904 8, 0, 8, SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list())),
65b8734a
MD
1905 side_attr_list()
1906 ),
1907 ),
1908 side_attr_list()
1909);
1910
d41cb7ee
MD
1911side_static_event(my_provider_event_gathervlaflex,
1912 "myprovider", "myeventgathervlaflex", SIDE_LOGLEVEL_DEBUG,
65b8734a 1913 side_field_list(
d41cb7ee 1914 side_field_gather_struct("structgathervlaflex", &mystructgathervlaflex, 0,
84c04cc8 1915 sizeof(struct testgathervlaflex), SIDE_TYPE_GATHER_ACCESS_DIRECT),
65b8734a
MD
1916 ),
1917 side_attr_list()
1918);
1919
1920#define VLAFLEXLEN 6
1921static
d41cb7ee 1922void test_gather_vla_flex(void)
65b8734a 1923{
d41cb7ee
MD
1924 side_event_cond(my_provider_event_gathervlaflex) {
1925 struct testgathervlaflex *mystruct = malloc(sizeof(*mystruct) + VLAFLEXLEN + sizeof(uint64_t));
65b8734a
MD
1926
1927 mystruct->len = VLAFLEXLEN;
1928 mystruct->otherfield = 0;
1929 mystruct->array[0] = 1;
1930 mystruct->array[1] = 2;
1931 mystruct->array[2] = 3;
1932 mystruct->array[3] = 4;
1933 mystruct->array[4] = 5;
1934 mystruct->array[5] = 6;
d41cb7ee 1935 side_event_call(my_provider_event_gathervlaflex,
65b8734a 1936 side_arg_list(
d41cb7ee 1937 side_arg_gather_struct(mystruct),
65b8734a
MD
1938 )
1939 );
1940 free(mystruct);
1941 }
1942}
1943
d69918cc
MD
1944side_static_event(my_provider_event_gatherbyte,
1945 "myprovider", "myeventgatherbyte", SIDE_LOGLEVEL_DEBUG,
1946 side_field_list(
84c04cc8 1947 side_field_gather_byte("byte", 0, SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list()),
d69918cc 1948 side_field_gather_array("array",
84c04cc8
MD
1949 side_elem(side_type_gather_byte(0, SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list())),
1950 3, 0, SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list()
d69918cc
MD
1951 ),
1952 ),
1953 side_attr_list()
1954);
1955
1956static
1957void test_gather_byte(void)
1958{
1959 side_event_cond(my_provider_event_structgatherarray) {
1960 uint8_t v = 0x44;
1961 uint8_t array[3] = { 0x1, 0x2, 0x3 };
1962
1963 side_event_call(my_provider_event_gatherbyte,
1964 side_arg_list(
1965 side_arg_gather_byte(&v),
1966 side_arg_gather_array(array),
1967 )
1968 );
1969 }
1970}
1971
8ad2f385
MD
1972#define ARRAYBOOLLEN 4
1973static bool arraybool[ARRAYBOOLLEN] = { false, true, false, true };
1974
1975side_static_event(my_provider_event_gatherbool,
1976 "myprovider", "myeventgatherbool", SIDE_LOGLEVEL_DEBUG,
1977 side_field_list(
1978 side_field_gather_bool("v1_true", 0, sizeof(bool) * CHAR_BIT,
1979 0, sizeof(bool) * CHAR_BIT,
1980 SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list()),
1981 side_field_gather_bool("v2_false", 0, sizeof(bool) * CHAR_BIT,
1982 0, sizeof(bool) * CHAR_BIT,
1983 SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list()),
1984 side_field_gather_bool("v3_true", 0, sizeof(uint16_t) * CHAR_BIT,
1985 1, 1, SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list()),
1986 side_field_gather_bool("v4_false", 0, sizeof(uint16_t) * CHAR_BIT,
1987 1, 1, SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list()),
1988 side_field_gather_array("arraybool",
1989 side_elem(side_type_gather_bool(0, sizeof(bool) * CHAR_BIT,
1990 0, sizeof(bool) * CHAR_BIT, SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list())),
1991 ARRAYBOOLLEN, 0, SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list()
1992 ),
1993 ),
1994 side_attr_list()
1995);
1996
1997static
1998void test_gather_bool(void)
1999{
2000 side_event_cond(my_provider_event_structgatherarray) {
2001 bool v1 = true;
2002 bool v2 = false;
2003 uint16_t v3 = 1U << 1;
2004 uint16_t v4 = 1U << 2;
2005
2006 side_event_call(my_provider_event_gatherbool,
2007 side_arg_list(
2008 side_arg_gather_bool(&v1),
2009 side_arg_gather_bool(&v2),
2010 side_arg_gather_bool(&v3),
2011 side_arg_gather_bool(&v4),
2012 side_arg_gather_array(arraybool),
2013 )
2014 );
2015 }
2016}
2017
f611d0c3
MD
2018int main()
2019{
2020 test_fields();
89747802
MD
2021 test_event_hidden();
2022 test_event_export();
c7a14585 2023 test_struct_literal();
f611d0c3
MD
2024 test_struct();
2025 test_array();
2026 test_vla();
2027 test_vla_visitor();
cdd6e858 2028 test_vla_visitor_2d();
a2e2357e
MD
2029 test_dynamic_basic_type();
2030 test_dynamic_vla();
465e5e7e 2031 test_dynamic_null();
c208889e
MD
2032 test_dynamic_struct();
2033 test_dynamic_nested_struct();
2034 test_dynamic_vla_struct();
2035 test_dynamic_struct_vla();
948e3e72 2036 test_dynamic_nested_vla();
19fa6aa2 2037 test_variadic();
41c4d119 2038 test_static_variadic();
4f40d951
MD
2039 test_bool();
2040 test_dynamic_bool();
8ceca0cd 2041 test_dynamic_vla_with_visitor();
2b359235 2042 test_dynamic_struct_with_visitor();
65010f43 2043 test_event_user_attribute();
a848763d 2044 test_field_user_attribute();
808bd9bf
MD
2045 test_variadic_attr();
2046 test_variadic_vla_attr();
2047 test_variadic_struct_attr();
fb25b355
MD
2048 test_float();
2049 test_variadic_float();
79f677ba 2050 test_enum();
ea32e5fc 2051 test_enum_bitmap();
7aec0d09 2052 test_blob();
71aa8975 2053 test_fmt_string();
8bdd5c12 2054 test_endian();
1d9c515c 2055 test_base();
d41cb7ee
MD
2056 test_struct_gather();
2057 test_struct_gather_nest_ptr();
2058 test_struct_gather_float();
2059 test_array_gather();
2060 test_gather_structnest();
2061 test_gather_vla();
2062 test_gather_vla_flex();
d69918cc 2063 test_gather_byte();
8ad2f385 2064 test_gather_bool();
f611d0c3
MD
2065 return 0;
2066}
This page took 0.130486 seconds and 4 git commands to generate.