Fix: static_assert unavailable with glibc < 2.16
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 25 Nov 2021 21:02:29 +0000 (16:02 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 29 Nov 2021 15:37:14 +0000 (10:37 -0500)
gcc 4.8 introduces support for C11, and gcc 4.6 introduces support for
_Static_assert. Therefore, using _Static_assert when C11 is detected is
always OK.

However, using static_assert in C11 depends on glibc >= 2.16. Even
though the minimum version requirement for glibc is not documented in
the README.md file, make a best effort to keep compatibility with older
glibc.

Fixes: #1331
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I33b65b839ea5ecd0f710179a7ef6fb6f5fda2e17

include/lttng/ust-compiler.h

index 32fd1bb25ed9ddb3a984b3882969c5c72b348f20..674b519cd11991ee4a04b42abdb081e86d2d7843 100644 (file)
  *   static assertion. This parameter must be a valid C identifier as it will
  *   be used as a typedef name.
  */
-#if defined (__cplusplus) || __STDC_VERSION__ >= 201112L
+#ifdef __cplusplus
 #define lttng_ust_static_assert(predicate, msg, c_identifier_msg)  \
        static_assert(predicate, msg)
+#elif __STDC_VERSION__ >= 201112L
+#define lttng_ust_static_assert(predicate, msg, c_identifier_msg)  \
+       _Static_assert(predicate, msg)
 #else
 /*
  * Evaluates the predicate and emit a compilation error on failure.
This page took 0.027665 seconds and 4 git commands to generate.