From: Mathieu Desnoyers Date: Mon, 11 Jun 2012 13:53:07 +0000 (-0400) Subject: Fix: tracepoint.h should not generate old-style definitions X-Git-Tag: v2.1.0-rc1~67 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=86637aa6452f66dee5f769461668c2ea059b3a30;p=lttng-ust.git Fix: tracepoint.h should not generate old-style definitions I've defined a tracepoint without arguments: TRACEPOINT_EVENT( qemu_tb_hash, flushall, TP_ARGS(void), TP_FIELDS() ) When I build (with -Werror=old-style-definition), I get this error: In file included from /home/hollisb/work/qemu.git/exec.c:59:0: /home/hollisb/work/qemu.git/tracepoints.h:24:2: error: function declaration isn’t a prototype [-Werror=strict-prototypes] /home/hollisb/work/qemu.git/tracepoints.h: In function ‘__tracepoint_cb_qemu_tb_hash___flushall’: /home/hollisb/work/qemu.git/tracepoints.h:24:2: error: old-style function definition [-Werror=old-style-definition] cc1: all warnings being treated as errors The preprocessed code looks like so: extern struct # 129 "/usr/local/include/lttng/tracepoint.h" 3 tracepoint # 24 "/home/hollisb/work/qemu.git/tracepoints.h" __tracepoint_qemu_tb_hash___flushall # 19 "/home/hollisb/work/qemu.git/tracepoints.h" ; static __attribute__ (( always_inline )) __inline__ void __tracepoint_cb_qemu_tb_hash___flushall # 19 "/home/hollisb/work/qemu.git/tracepoints.h" () { struct tracepoint_probe *__tp_probe; if (!tracepoint_dlopen.rcu_read_lock_sym_bp) return; tracepoint_dlopen.rcu_read_lock_sym_bp(); __tp_probe = ({ typeof(__tracepoint_qemu_tb_hash___flushall.probes) _________p1 = ((typeof(__tracepoint_qemu_tb_hash___flushall.probes)) (tracepoint_dlopen.rcu_dereference_sym_bp(((void *) (__tracepoint_qemu_tb_hash___flushall.probes))))); (_________p1); }); if (__builtin_expect(!!(!__tp_probe), 0)) goto end; do { void *__tp_cb = __tp_probe->func; void *__tp_data = __tp_probe->data; ((void (*)(void *__tp_data)) (__tp_cb)) (__tp_data); } while ((++__tp_probe)->func); end: tracepoint_dlopen.rcu_read_unlock_sym_bp(); } static __attribute__ (( always_inline )) __inline__ void I believe the problem comes from -Werror=old-style-definition not liking that empty "()", i.e. tracepoint_cb_qemu_tb_hash___flushall() { ... }. Reported-by: Hollis Blanchard Signed-off-by: Mathieu Desnoyers --- diff --git a/include/lttng/tracepoint.h b/include/lttng/tracepoint.h index 4b773bbc..60d8c73b 100644 --- a/include/lttng/tracepoint.h +++ b/include/lttng/tracepoint.h @@ -88,7 +88,7 @@ extern "C" { #define _TP_EXDATA_VAR20(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t) __tp_data,b,d,f,h,j,l,n,p,r,t /* _TP_EXPROTO* extract tuples of type, var */ -#define _TP_EXPROTO0() +#define _TP_EXPROTO0() void #define _TP_EXPROTO2(a,b) a b #define _TP_EXPROTO4(a,b,c,d) a b,c d #define _TP_EXPROTO6(a,b,c,d,e,f) a b,c d,e f