+static inline void tracepoint_disable_destructors(void)
+{
+ if (!tracepoint_dlopen_ptr)
+ tracepoint_dlopen_ptr = &tracepoint_dlopen;
+ if (!tracepoint_destructors_syms_ptr)
+ tracepoint_destructors_syms_ptr = &tracepoint_destructors_syms;
+ if (tracepoint_dlopen_ptr->liblttngust_handle
+ && tracepoint_destructors_syms_ptr->tracepoint_disable_destructors)
+ tracepoint_destructors_syms_ptr->tracepoint_disable_destructors();
+ *tracepoint_destructors_syms_ptr->old_tracepoint_disable_destructors = 1;
+}
+
+#ifndef _LGPL_SOURCE
+static inline void lttng_ust_notrace
+__tracepoint__init_urcu_sym(void);
+static inline void
+__tracepoint__init_urcu_sym(void)
+{
+ if (!tracepoint_dlopen_ptr)
+ tracepoint_dlopen_ptr = &tracepoint_dlopen;
+ /*
+ * 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 =
+ 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 =
+ 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 =
+ URCU_FORCE_CAST(void *(*)(void *p),
+ dlsym(tracepoint_dlopen_ptr->liblttngust_handle,
+ "tp_rcu_dereference_sym_bp"));
+}
+#else
+static inline void lttng_ust_notrace
+__tracepoint__init_urcu_sym(void);
+static inline void
+__tracepoint__init_urcu_sym(void)
+{
+}
+#endif
+