From 23b75ae5efa941fbd8ab666ae3dcf161789dfde5 Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Fri, 26 Jun 2020 15:44:20 -0400 Subject: [PATCH] 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 --- include/lttng/tracepoint.h | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) 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 -- 2.34.1