From: Stefan Hajnoczi via lttng-dev <lttng-dev@lists.lttng.org> To: lttng-dev@lists.lttng.org Cc: Stefan Hajnoczi <stefanha@redhat.com> Subject: [PATCH] Fix: tracepoint.h: define SDT_USE_VARIADIC in pkg-config CFLAGS Date: Wed, 24 Jun 2020 17:09:34 +0100 [thread overview] Message-ID: <20200624160934.205881-1-stefanha@redhat.com> (raw) LTTng Userspace Tracer 2.11 with sdt enabled can break builds of applications that include <sys/sdt.h> themselves. QEMU (https://qemu.org/) is one example. When applications include <sys/sdt.h> themselves before LTTng Userspace Tracer header files and the SDT_USE_VARIADIC macro is not defined, compilation fails due to the absense of STAP_PROBEV() macro that LTTng Userspace Tracer requires. Define SDT_USE_VARIADIC in the pkg-config file so that all compilation units that use LTTng Userspace Tracer are guaranteed to have the macro defined even if <sys/sdt.h> is included elsewhere before LTTng Userspace Tracer header files. In other words, define SDT_USE_VARIADIC on the compiler command-line instead of in <lttng/tracepoint.h>. This way it will always been defined when <sys/sdt.h> is included. Make sure to define SDT_USE_VARIADIC when <lttng/tracepoint.h> is included without it. This happens when applications do not use pkg-config. Fixes: b2f60c7986bb69f81b79b68f1bfe83aafa3278a7 ("Add sdt.h integration") Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- Warning: this patch doesn't work yet. SDT_CFLAGS also needs to be passed into LTTng Userspace Tracer's own CFLAGS so that compilation can succeed. I don't know the autoconf/automake syntax to do this and wanted to see what you think of this solution before investing more time. --- include/lttng/tracepoint.h | 2 ++ configure.ac | 2 ++ lttng-ust.pc.in | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/include/lttng/tracepoint.h b/include/lttng/tracepoint.h index 7cfae3e4..6b699373 100644 --- a/include/lttng/tracepoint.h +++ b/include/lttng/tracepoint.h @@ -35,7 +35,9 @@ #include <lttng/ust-compiler.h> #ifdef LTTNG_UST_HAVE_SDT_INTEGRATION +#ifndef SDT_USE_VARIADIC #define SDT_USE_VARIADIC +#endif #include <sys/sdt.h> #define LTTNG_STAP_PROBEV STAP_PROBEV #else diff --git a/configure.ac b/configure.ac index eb1bb3e6..bb3eeb60 100644 --- a/configure.ac +++ b/configure.ac @@ -427,6 +427,7 @@ AS_IF([test "x$with_sdt" = "xyes"], [ ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE([LTTNG_UST_HAVE_SDT_INTEGRATION], [1]) + SDT_CFLAGS="-DSDT_USE_VARIADIC" ], [ AC_MSG_RESULT([no]) AC_MSG_ERROR([The sdt.h integration was requested but the STAP_PROBEV define cannot be used. Make sure it is installed, and up to date, or use CPPFLAGS=-I/path/ to specify a non-standard path to sys/sdt.h]) @@ -522,6 +523,7 @@ _AC_DEFINE_AND_SUBST([LTTNG_UST_DEFAULT_CONSTRUCTOR_TIMEOUT_MS], [3000]) AM_CFLAGS="-Wall" AC_SUBST(AM_CFLAGS) AC_SUBST(JNI_CPPFLAGS) +AC_SUBST(SDT_CFLAGS) AC_CONFIG_FILES([ Makefile diff --git a/lttng-ust.pc.in b/lttng-ust.pc.in index f9adde87..1b96db06 100644 --- a/lttng-ust.pc.in +++ b/lttng-ust.pc.in @@ -9,5 +9,5 @@ Version: @PACKAGE_VERSION@ Requires: Requires.private: liburcu-bp Libs: -L${libdir} -llttng-ust -ldl -Cflags: -I${includedir} +Cflags: -I${includedir} @SDT_CFLAGS@ -- 2.26.2
WARNING: multiple messages have this Message-ID (diff)
From: Stefan Hajnoczi via lttng-dev <lttng-dev@lists.lttng.org> To: lttng-dev@lists.lttng.org Cc: Stefan Hajnoczi <stefanha@redhat.com> Subject: [lttng-dev] [PATCH] Fix: tracepoint.h: define SDT_USE_VARIADIC in pkg-config CFLAGS Date: Wed, 24 Jun 2020 17:09:34 +0100 [thread overview] Message-ID: <20200624160934.205881-1-stefanha@redhat.com> (raw) Message-ID: <20200624160934.Q2ULwh9r1YF3NNwY3eGywsu5dV1_SnsPIV0faIZvky4@z> (raw) LTTng Userspace Tracer 2.11 with sdt enabled can break builds of applications that include <sys/sdt.h> themselves. QEMU (https://qemu.org/) is one example. When applications include <sys/sdt.h> themselves before LTTng Userspace Tracer header files and the SDT_USE_VARIADIC macro is not defined, compilation fails due to the absense of STAP_PROBEV() macro that LTTng Userspace Tracer requires. Define SDT_USE_VARIADIC in the pkg-config file so that all compilation units that use LTTng Userspace Tracer are guaranteed to have the macro defined even if <sys/sdt.h> is included elsewhere before LTTng Userspace Tracer header files. In other words, define SDT_USE_VARIADIC on the compiler command-line instead of in <lttng/tracepoint.h>. This way it will always been defined when <sys/sdt.h> is included. Make sure to define SDT_USE_VARIADIC when <lttng/tracepoint.h> is included without it. This happens when applications do not use pkg-config. Fixes: b2f60c7986bb69f81b79b68f1bfe83aafa3278a7 ("Add sdt.h integration") Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- Warning: this patch doesn't work yet. SDT_CFLAGS also needs to be passed into LTTng Userspace Tracer's own CFLAGS so that compilation can succeed. I don't know the autoconf/automake syntax to do this and wanted to see what you think of this solution before investing more time. --- include/lttng/tracepoint.h | 2 ++ configure.ac | 2 ++ lttng-ust.pc.in | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/include/lttng/tracepoint.h b/include/lttng/tracepoint.h index 7cfae3e4..6b699373 100644 --- a/include/lttng/tracepoint.h +++ b/include/lttng/tracepoint.h @@ -35,7 +35,9 @@ #include <lttng/ust-compiler.h> #ifdef LTTNG_UST_HAVE_SDT_INTEGRATION +#ifndef SDT_USE_VARIADIC #define SDT_USE_VARIADIC +#endif #include <sys/sdt.h> #define LTTNG_STAP_PROBEV STAP_PROBEV #else diff --git a/configure.ac b/configure.ac index eb1bb3e6..bb3eeb60 100644 --- a/configure.ac +++ b/configure.ac @@ -427,6 +427,7 @@ AS_IF([test "x$with_sdt" = "xyes"], [ ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE([LTTNG_UST_HAVE_SDT_INTEGRATION], [1]) + SDT_CFLAGS="-DSDT_USE_VARIADIC" ], [ AC_MSG_RESULT([no]) AC_MSG_ERROR([The sdt.h integration was requested but the STAP_PROBEV define cannot be used. Make sure it is installed, and up to date, or use CPPFLAGS=-I/path/ to specify a non-standard path to sys/sdt.h]) @@ -522,6 +523,7 @@ _AC_DEFINE_AND_SUBST([LTTNG_UST_DEFAULT_CONSTRUCTOR_TIMEOUT_MS], [3000]) AM_CFLAGS="-Wall" AC_SUBST(AM_CFLAGS) AC_SUBST(JNI_CPPFLAGS) +AC_SUBST(SDT_CFLAGS) AC_CONFIG_FILES([ Makefile diff --git a/lttng-ust.pc.in b/lttng-ust.pc.in index f9adde87..1b96db06 100644 --- a/lttng-ust.pc.in +++ b/lttng-ust.pc.in @@ -9,5 +9,5 @@ Version: @PACKAGE_VERSION@ Requires: Requires.private: liburcu-bp Libs: -L${libdir} -llttng-ust -ldl -Cflags: -I${includedir} +Cflags: -I${includedir} @SDT_CFLAGS@ -- 2.26.2 _______________________________________________ lttng-dev mailing list lttng-dev@lists.lttng.org https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
next reply other threads:[~2020-06-24 16:10 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-06-24 16:09 Stefan Hajnoczi via lttng-dev [this message] 2020-06-24 16:09 ` [lttng-dev] [PATCH] Fix: tracepoint.h: define SDT_USE_VARIADIC in pkg-config CFLAGS Stefan Hajnoczi via lttng-dev 2020-06-26 21:02 ` Michael Jeanson via lttng-dev 2020-06-26 21:02 ` [lttng-dev] " Michael Jeanson via lttng-dev 2020-06-29 16:26 ` Stefan Hajnoczi via lttng-dev 2020-06-29 16:26 ` [lttng-dev] " Stefan Hajnoczi via lttng-dev 2020-06-29 16:36 ` Michael Jeanson via lttng-dev 2020-06-29 16:36 ` [lttng-dev] " Michael Jeanson via lttng-dev 2020-06-30 9:05 ` Stefan Hajnoczi via lttng-dev 2020-06-30 9:05 ` [lttng-dev] " Stefan Hajnoczi via lttng-dev
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200624160934.205881-1-stefanha@redhat.com \ --to=lttng-dev@lists.lttng.org \ --cc=stefanha@redhat.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).