Add compile time assertion that array and sequence have integer elements
Currently, LTTng-UST only supports ctf_arrays(and ctf_sequences) of
integers and chars but there is nothing preventing the user of compiling
an array of double. This is problematic because the resulting metadata
for that array will end up being erroneous.
This commit adds a new stage in the probe building process that asserts
that the element type of arrays or sequences are supported. This stage
adds a compile time static assertion, so the probes won't build if the
type is not supported.
Here is the error message the user will get when compiling with a C99
compiler:
gcc -c -sdt=c99 -I. tp.c
In file included from /usr/local/include/lttng/tracepoint-event.h:58:0,
from tp.h:77,
from tp.c:4:
././tp.h:71:9: error: size of array ‘lttng_static_assert_Non_integer_type__my_array__not_supported_as_element_of_CTF_ARRAY_or_CTF_SEQUENCE’ is negative
ctf_array(double, my_array_for_double, my_array_for_double, 3)
Here is the error message the user will get when compiling with a C++ or
C11 compiler or above:
g++ -c -std=c11 -I. tp.c
In file included from /usr/local/include/lttng/tracepoint-event.h:58:0,
from tp.h:77,
from tp.c:4:
././tp.h:71:9: error: static assertion failed: Non-integer type `my_array` not supported as element of CTF_ARRAY or CTF_SEQUENCE
ctf_array(double, my_array, my_array_for_double, 3)
Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ie958635a8dc6262793d45c5f7458d50a0fecf7ab
This page took 0.02573 seconds and 4 git commands to generate.