From: Michael Jeanson Date: Fri, 26 Jun 2020 19:44:20 +0000 (-0400) Subject: Fix: support compile units including 'sys/sdt.h' without defining SDT_USE_VARIADIC X-Git-Tag: v2.13.0-rc1~495 X-Git-Url: http://git.liburcu.org/?p=lttng-ust.git;a=commitdiff_plain;h=23b75ae5efa941fbd8ab666ae3dcf161789dfde5 Fix: support compile units including 'sys/sdt.h' without defining SDT_USE_VARIADIC Instead of using SDT_USE_VARIADIC from 'sys/sdt.h', use our own namespaced macros since the instrumented application might already have included 'sys/sdt.h' without variadic support. Signed-off-by: Michael Jeanson Signed-off-by: Mathieu Desnoyers Change-Id: Idfece1a65a5296a90d33370bc8d73ea554c14b0f --- diff --git a/include/lttng/tracepoint.h b/include/lttng/tracepoint.h index 7cfae3e4..1cf02188 100644 --- a/include/lttng/tracepoint.h +++ b/include/lttng/tracepoint.h @@ -35,9 +35,24 @@ #include #ifdef LTTNG_UST_HAVE_SDT_INTEGRATION -#define SDT_USE_VARIADIC +/* + * Instead of using SDT_USE_VARIADIC from 'sys/sdt.h', use our own namespaced + * macros since the instrumented application might already have included + * 'sys/sdt.h' without variadic support. + */ #include -#define LTTNG_STAP_PROBEV STAP_PROBEV + +#define _LTTNG_SDT_NARG(...) \ + __LTTNG_SDT_NARG(__VA_ARGS__, 12,11,10,9,8,7,6,5,4,3,2,1,0) + +#define __LTTNG_SDT_NARG(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12, N, ...) N + +#define _LTTNG_SDT_PROBE_N(provider, name, N, ...) \ + _SDT_PROBE(provider, name, N, (__VA_ARGS__)) + +#define LTTNG_STAP_PROBEV(provider, name, ...) \ + _LTTNG_SDT_PROBE_N(provider, name, _LTTNG_SDT_NARG(0, ##__VA_ARGS__), ##__VA_ARGS__) + #else #define LTTNG_STAP_PROBEV(...) #endif