Add compile time assertion that array and sequence have integer elements
authorFrancis Deslauriers <francis.deslauriers@efficios.com>
Fri, 24 Apr 2020 16:30:22 +0000 (12:30 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 24 Apr 2020 23:48:55 +0000 (19:48 -0400)
commit2df82195d140b39c40abfb43d526804a9d14d3da
tree3bab56b6e1f8138979a01a0d4d80a8118c74a7a4
parent7f2640686401c087210073de0631caa0a1ee4fbe
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
include/lttng/ust-tracepoint-event.h
include/lttng/ust-tracer.h
This page took 0.025704 seconds and 4 git commands to generate.