#define TRACEPOINT_LIB \
extern struct tracepoint * const __start___tracepoints_ptrs[] __attribute__((weak, visibility("hidden"))); \
extern struct tracepoint * const __stop___tracepoints_ptrs[] __attribute__((weak, visibility("hidden"))); \
+ static struct tracepoint * const __tracepoint_ptr_dummy \
+ __attribute__((used, section("__tracepoints_ptrs"))) = NULL; \
static void __attribute__((constructor)) __tracepoints__init(void) \
{ \
- tracepoint_register_lib(__start___tracepoints, \
- __stop___tracepoints - \
- __start___tracepoints); \
+ tracepoint_register_lib(__start___tracepoints_ptrs, \
+ __stop___tracepoints_ptrs - \
+ __start___tracepoints_ptrs); \
} \
\
static void __attribute__((destructor)) __tracepoints__destroy(void) \
{ \
- tracepoint_unregister_lib(__start___tracepoints); \
+ tracepoint_unregister_lib(__start___tracepoints_ptrs); \
}
__attribute__((weak, visibility("hidden"))); \
extern struct trace_event * const __stop___trace_events_ptrs[] \
__attribute__((weak, visibility("hidden"))); \
+ static struct trace_event * const __event_ptrs_dummy \
+ __attribute__((used, section("__trace_events_ptrs"))) = NULL; \
static void __attribute__((constructor)) \
__trace_events__init(void) \
{ \