With the current implementation, in order to use tracef() within your application, you have to link it against liblttng-ust, because _lttng_ust_tracef() is part of it.
So move _lttng_ust_tracef() to the header file in order to drop this static awareness, allowing the application to be compiled with -DTRACEPOINT_DEFINE and -DTRACEPOINT_PROBE_DYNAMIC_LINKAGE without any static dependency to liblttng-ust.so (you will need to LD_PRELOAD it in order for tracing to work though). Signed-off-by: Gerlando Falauto <[email protected]> --- include/lttng/tracef.h | 18 ++++++++++++++++-- liblttng-ust/tracef.c | 16 ---------------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/include/lttng/tracef.h b/include/lttng/tracef.h index 7e8b59e..612c56a 100644 --- a/include/lttng/tracef.h +++ b/include/lttng/tracef.h @@ -29,8 +29,22 @@ extern "C" { #endif -extern -void _lttng_ust_tracef(const char *fmt, ...); +static inline void _lttng_ust_tracef(const char *fmt, ...) +{ + va_list ap; + char *msg; + int len; + + va_start(ap, fmt); + len = vasprintf(&msg, fmt, ap); + /* len does not include the final \0 */ + if (len < 0) + goto end; + __tracepoint_cb_lttng_ust_tracef___event(msg, len); + free(msg); +end: + va_end(ap); +} #define tracef(fmt, ...) \ do { \ diff --git a/liblttng-ust/tracef.c b/liblttng-ust/tracef.c index 9ef063c..0c7ab17 100644 --- a/liblttng-ust/tracef.c +++ b/liblttng-ust/tracef.c @@ -28,19 +28,3 @@ #define TRACEPOINT_DEFINE #include "lttng-ust-tracef-provider.h" -void _lttng_ust_tracef(const char *fmt, ...) -{ - va_list ap; - char *msg; - int len; - - va_start(ap, fmt); - len = vasprintf(&msg, fmt, ap); - /* len does not include the final \0 */ - if (len < 0) - goto end; - __tracepoint_cb_lttng_ust_tracef___event(msg, len); - free(msg); -end: - va_end(ap); -} -- 1.8.0.1 _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
