Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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
- Loading branch information