Bump soname major to 1
[lttng-ust.git] / include / lttng / tracepoint.h
index d77a2fb298c40f99c7fd290eb48eda48d36bcae9..51eafdeb5a4cce36e957ede0d5af31557fb5d803 100644 (file)
 #include <lttng/ust-compiler.h>
 
 #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 <sys/sdt.h>
-#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
@@ -165,12 +180,12 @@ void __tracepoint_cb_##_provider##___##_name(_TP_ARGS_PROTO(__VA_ARGS__));                \
 static                                                                                 \
 void __tracepoint_cb_##_provider##___##_name(_TP_ARGS_PROTO(__VA_ARGS__))              \
 {                                                                                      \
-       struct lttng_ust_tracepoint_probe *__tp_probe;                                          \
+       struct lttng_ust_tracepoint_probe *__tp_probe;                                  \
                                                                                        \
        if (caa_unlikely(!TP_RCU_LINK_TEST()))                                          \
                return;                                                                 \
-       tp_rcu_read_lock_bp();                                                          \
-       __tp_probe = tp_rcu_dereference_bp(__tracepoint_##_provider##___##_name.probes); \
+       tp_rcu_read_lock();                                                             \
+       __tp_probe = tp_rcu_dereference(__tracepoint_##_provider##___##_name.probes);   \
        if (caa_unlikely(!__tp_probe))                                                  \
                goto end;                                                               \
        do {                                                                            \
@@ -181,7 +196,7 @@ void __tracepoint_cb_##_provider##___##_name(_TP_ARGS_PROTO(__VA_ARGS__))           \
                                (_TP_ARGS_DATA_VAR(__VA_ARGS__));                       \
        } while ((++__tp_probe)->func);                                                 \
 end:                                                                                   \
-       tp_rcu_read_unlock_bp();                                                        \
+       tp_rcu_read_unlock();                                                           \
 }                                                                                      \
 static inline lttng_ust_notrace                                                                \
 void __tracepoint_register_##_provider##___##_name(char *name,                         \
@@ -218,9 +233,9 @@ struct lttng_ust_tracepoint_dlopen {
        int (*tracepoint_register_lib)(struct lttng_ust_tracepoint * const *tracepoints_start,
                int tracepoints_count);
        int (*tracepoint_unregister_lib)(struct lttng_ust_tracepoint * const *tracepoints_start);
-       void (*rcu_read_lock_sym_bp)(void);
-       void (*rcu_read_unlock_sym_bp)(void);
-       void *(*rcu_dereference_sym_bp)(void *p);
+       void (*rcu_read_lock_sym)(void);
+       void (*rcu_read_unlock_sym)(void);
+       void *(*rcu_dereference_sym)(void *p);
 };
 
 extern struct lttng_ust_tracepoint_dlopen tracepoint_dlopen;
@@ -293,21 +308,21 @@ __tracepoint__init_urcu_sym(void)
         * Symbols below are needed by tracepoint call sites and probe
         * providers.
         */
-       if (!tracepoint_dlopen_ptr->rcu_read_lock_sym_bp)
-               tracepoint_dlopen_ptr->rcu_read_lock_sym_bp =
+       if (!tracepoint_dlopen_ptr->rcu_read_lock_sym)
+               tracepoint_dlopen_ptr->rcu_read_lock_sym =
                        URCU_FORCE_CAST(void (*)(void),
                                dlsym(tracepoint_dlopen_ptr->liblttngust_handle,
-                                       "tp_rcu_read_lock_bp"));
-       if (!tracepoint_dlopen_ptr->rcu_read_unlock_sym_bp)
-               tracepoint_dlopen_ptr->rcu_read_unlock_sym_bp =
+                                       "tp_rcu_read_lock"));
+       if (!tracepoint_dlopen_ptr->rcu_read_unlock_sym)
+               tracepoint_dlopen_ptr->rcu_read_unlock_sym =
                        URCU_FORCE_CAST(void (*)(void),
                                dlsym(tracepoint_dlopen_ptr->liblttngust_handle,
-                                       "tp_rcu_read_unlock_bp"));
-       if (!tracepoint_dlopen_ptr->rcu_dereference_sym_bp)
-               tracepoint_dlopen_ptr->rcu_dereference_sym_bp =
+                                       "tp_rcu_read_unlock"));
+       if (!tracepoint_dlopen_ptr->rcu_dereference_sym)
+               tracepoint_dlopen_ptr->rcu_dereference_sym =
                        URCU_FORCE_CAST(void *(*)(void *p),
                                dlsym(tracepoint_dlopen_ptr->liblttngust_handle,
-                                       "tp_rcu_dereference_sym_bp"));
+                                       "tp_rcu_dereference_sym"));
 }
 #else
 static inline void lttng_ust_notrace
@@ -334,7 +349,7 @@ __tracepoints__init(void)
                tracepoint_dlopen_ptr = &tracepoint_dlopen;
        if (!tracepoint_dlopen_ptr->liblttngust_handle)
                tracepoint_dlopen_ptr->liblttngust_handle =
-                       dlopen("liblttng-ust-tracepoint.so.0", RTLD_NOW | RTLD_GLOBAL);
+                       dlopen("liblttng-ust-tracepoint.so.1", RTLD_NOW | RTLD_GLOBAL);
        if (!tracepoint_dlopen_ptr->liblttngust_handle)
                return;
        __tracepoint__init_urcu_sym();
@@ -441,7 +456,8 @@ extern struct lttng_ust_tracepoint * const __stop___tracepoints_ptrs[]
                };                                                              \
        static struct lttng_ust_tracepoint *                                    \
                __tracepoint_ptr_##_provider##___##_name                        \
-               __attribute__((used, section("__tracepoints_ptrs"))) =          \
+               __attribute__((section("__tracepoints_ptrs"), used))            \
+               __lttng_ust_variable_attribute_no_sanitize_address =            \
                        &__tracepoint_##_provider##___##_name;
 
 static void lttng_ust_notrace __attribute__((constructor))
@@ -455,7 +471,7 @@ __tracepoints__ptrs_init(void)
                tracepoint_dlopen_ptr = &tracepoint_dlopen;
        if (!tracepoint_dlopen_ptr->liblttngust_handle)
                tracepoint_dlopen_ptr->liblttngust_handle =
-                       dlopen("liblttng-ust-tracepoint.so.0", RTLD_NOW | RTLD_GLOBAL);
+                       dlopen("liblttng-ust-tracepoint.so.1", RTLD_NOW | RTLD_GLOBAL);
        if (!tracepoint_dlopen_ptr->liblttngust_handle)
                return;
        if (!tracepoint_destructors_syms_ptr)
@@ -463,11 +479,11 @@ __tracepoints__ptrs_init(void)
        tracepoint_dlopen_ptr->tracepoint_register_lib =
                URCU_FORCE_CAST(int (*)(struct lttng_ust_tracepoint * const *, int),
                                dlsym(tracepoint_dlopen_ptr->liblttngust_handle,
-                                       "tracepoint_register_lib"));
+                                       "tracepoint_register_lib2"));
        tracepoint_dlopen_ptr->tracepoint_unregister_lib =
                URCU_FORCE_CAST(int (*)(struct lttng_ust_tracepoint * const *),
                                dlsym(tracepoint_dlopen_ptr->liblttngust_handle,
-                                       "tracepoint_unregister_lib"));
+                                       "tracepoint_unregister_lib2"));
        tracepoint_destructors_syms_ptr->old_tracepoint_disable_destructors =
                URCU_FORCE_CAST(int *,
                                dlsym(tracepoint_dlopen_ptr->liblttngust_handle,
@@ -580,7 +596,7 @@ __tracepoints__ptrs_destroy(void)
  * How to use the TRACEPOINT_EVENT macro:
  *
  * An example:
- * 
+ *
  * TRACEPOINT_EVENT(someproject_component, event_name,
  *
  *     * TP_ARGS takes from 0 to 10 "type, field_name" pairs *
@@ -591,23 +607,23 @@ __tracepoints__ptrs_destroy(void)
  *     * TP_FIELDS describes the event payload layout in the trace *
  *
  *     TP_FIELDS(
- *         * Integer, printed in base 10 * 
+ *         * Integer, printed in base 10 *
  *         ctf_integer(int, field_a, arg0)
  *
- *         * Integer, printed with 0x base 16 * 
+ *         * Integer, printed with 0x base 16 *
  *         ctf_integer_hex(unsigned long, field_d, arg1)
  *
  *         * Enumeration *
  *         ctf_enum(someproject_component, enum_name, int, field_e, arg0)
  *
- *         * Array Sequence, printed as UTF8-encoded array of bytes * 
+ *         * Array Sequence, printed as UTF8-encoded array of bytes *
  *         ctf_array_text(char, field_b, string, FIXED_LEN)
  *         ctf_sequence_text(char, field_c, string, size_t, strlen)
  *
- *         * String, printed as UTF8-encoded string * 
+ *         * String, printed as UTF8-encoded string *
  *         ctf_string(field_e, string)
  *
- *         * Array sequence of signed integer values * 
+ *         * Array sequence of signed integer values *
  *         ctf_array(long, field_f, arg4, FIXED_LEN4)
  *         ctf_sequence(long, field_g, arg4, size_t, arg4_len)
  *     )
This page took 0.0265 seconds and 4 git commands to generate.