Stefan Hajnoczi writes: > AFAICT the only problem with libust is the __tp_cb_data set but not > used warning that gcc 4.6 emits, see my test program:
Here's a prettified version of the failing (pre-processed) code: static inline void trace_ust_g_malloc(size_t size, void* ptr) { do { if (__builtin_expect(!!(__tracepoint_ust_g_malloc.state), 0)) do { struct tracepoint_probe *__tp_it_probe_ptr; void *__tp_it_func; void *__tp_cb_data; rcu_read_lock_bp(); __tp_it_probe_ptr = ({ typeof((&__tracepoint_ust_g_malloc)->probes) _________p1 = rcu_dereference_sym((void *)((&__tracepoint_ust_g_malloc)->probes)); (_________p1); }); if (__tp_it_probe_ptr) { do { __tp_it_func = __tp_it_probe_ptr->func; __tp_cb_data = __tp_it_probe_ptr->data; ((void(*)(size_t size, void* ptr))__tp_it_func)(size, ptr); } while ((++__tp_it_probe_ptr)->func); } rcu_read_unlock_bp(); } while (0); } while (0); } Which is produced by the "__DO_TRACE" macro in "ust/tracepoint.h". The original code is: DECLARE_TRACE(ust_g_malloc, TP_PROTO(size_t size, void* ptr), TP_ARGS(size, ptr)); #define trace_g_malloc trace_ust_g_malloc I don't know about the portability requirements in UST, but if supporting only gcc is an option, you can simply use this line in the macro: void *__tp_cb_data __attribute__((unused)); Even with this fixed, there still seem to be problems with events without parameters: DECLARE_TRACE(ust_slavio_misc_update_irq_raise, TP_PROTO(void), TP_ARGS()); #define trace_slavio_misc_update_irq_raise trace_ust_slavio_misc_update_irq_raise ./trace.h: In function ‘__trace_ust_slavio_misc_update_irq_raise’: ./trace.h:361:1: error: ‘void’ must be the only parameter ./trace.h:361:1: error: expected expression before ‘)’ token ./trace.h:361:1: error: too many arguments to function ‘(void (*)(void *))__tp_it_func’ The debian/testing version of ust is 0.15, and the sources have a ChangeLog with this at the top: 2011-07-15 ust 0.15 * Add backward compability for tracepoint API (still planned for deprecation, but should make the transition smoother). Lluis -- "And it's much the same thing with knowledge, for whenever you learn something new, the whole world becomes that much richer." -- The Princess of Pure Reason, as told by Norton Juster in The Phantom Tollbooth