diff --git a/changes/ticket40174 b/changes/ticket40174 new file mode 100644 index 0000000000..869a2756f4 --- /dev/null +++ b/changes/ticket40174 @@ -0,0 +1,4 @@ + o Minor bugfixes (configure, build): + - With USDT tracing enabled, if STAP_PROBEV() is missing, don't attempt to + build. Linux supports that macro but not the BSDs. Fixes bug 40174; bugfix + on 0.4.5.1-alpha. diff --git a/configure.ac b/configure.ac index 77b0e43207..5e16884f74 100644 --- a/configure.ac +++ b/configure.ac @@ -292,11 +292,25 @@ if test "x$enable_tracing_instrumentation_usdt" = "xyes"; then AC_CHECK_HEADERS([sys/sdt.h], [], [AC_MSG_ERROR([USDT instrumentation requires sys/sdt.h header. On Debian, apt install systemtap-sdt-dev])], []) - dnl LTTng generates USDT probes if the UST library was built with - dnl --with-sdt. There is unfortunately no way to check that so we always - dnl build the USDT probes even though LTTng instrumentation was requested. - AC_DEFINE([USE_TRACING_INSTRUMENTATION_USDT], [1], [Using USDT instrumentation]) - have_tracing=1 + AC_MSG_CHECKING([STAP_PROBEV()]) + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ + #define SDT_USE_VARIADIC + #include + void test(void) + { + STAP_PROBEV(p, n, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); + } + ]])], [ + AC_MSG_RESULT([yes]) + dnl LTTng generates USDT probes if the UST library was built with + dnl --with-sdt. There is unfortunately no way to check that so we always + dnl build the USDT probes even though LTTng instrumentation was requested. + AC_DEFINE([USE_TRACING_INSTRUMENTATION_USDT], [1], [Using USDT instrumentation]) + have_tracing=1 + ], [ + AC_MSG_RESULT([no]) + AC_MSG_ERROR([USDT tracing support requires STAP_PROBEV()]) + ]) fi dnl Tracepoints event to debug logs.