ust-compiler.h: Allocate compound literals on heap with gcc <= 4.8
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 20 Apr 2020 18:27:31 +0000 (14:27 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 20 Apr 2020 18:40:01 +0000 (14:40 -0400)
g++ 4.8 and prior do not support C99 compound literals. Therefore,
force allocating those on the heap with these C++ compilers.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
include/lttng/ust-compiler.h

index 799bca4291d2802ee590ab628dadc4e956fc1ddf..c289628580ee420346a24e6e72bc9f7fa9299ebd 100644 (file)
 #  define __lttng_ust_variable_attribute_no_sanitize_address
 #endif
 
+/*
+ * g++ 4.8 and prior do not support C99 compound literals. Therefore,
+ * force allocating those on the heap with these C++ compilers.
+ */
+#if defined (__cplusplus) && defined (__GNUC__) && \
+       (__GNUC__ < 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ <= 8))
+# ifndef LTTNG_ALLOCATE_COMPOUND_LITERAL_ON_HEAP
+#  define LTTNG_ALLOCATE_COMPOUND_LITERAL_ON_HEAP
+# endif
+#endif
+
 /*
  * Compound literals with static storage are needed by LTTng.
  * Compound literals are part of the C99 and C11 standards, but not
This page took 0.02433 seconds and 4 git commands to generate.