* Hollis Blanchard ([email protected]) wrote: > Hi, I was adding an LTTng UST 2.0 tracepoint to an application that uses > -warn-common (see http://www.math.utah.edu/docs/info/ld_2.html). I > created a simple tracepoint, had lttng-gen-tp produce tracepoints.o, > then linked that to the application, along with -llttng-ust. This > results in some warnings: > > tracepoints.o: warning: common of `handle' overridden by definition > /usr/local/lib/liblttng-ust.so: warning: defined here > tracepoints.o: warning: common of `lttng_client_callbacks_overwrite' > overridden by definition > /usr/local/lib/liblttng-ust.so: warning: defined here > tracepoints.o: warning: common of `lttng_client_callbacks_discard' overridden > by definition > /usr/local/lib/liblttng-ust.so: warning: defined here > tracepoints.o: warning: common of `lttng_client_callbacks_metadata' > overridden by definition > /usr/local/lib/liblttng-ust.so: warning: defined here > /usr/local/lib/liblttng-ust-tracepoint.so.0: warning: multiple common of > `handle' > tracepoints.o: warning: previous common is here > > This seems to be a valid warning. The LTTng UST headers contain > definitions like this in include/lttng/ringbuffer-config.h: > struct lttng_ust_shm_handle *handle; > > If two objects use that header, each will get a copy of "handle", right?
Thanks for reporting, fixed by master commit: commit 5a821cd6258af4b44aac352bd89b715377cee7d2 Author: Mathieu Desnoyers <[email protected]> Date: Fri Jun 8 13:17:05 2012 -0400 Fix: don't define variables in headers From Hollis Blanchard <[email protected]>: > Hi, I was adding an LTTng UST 2.0 tracepoint to an application that uses > -warn-common (see http://www.math.utah.edu/docs/info/ld_2.html). I created > a simple tracepoint, had lttng-gen-tp produce tracepoints.o, then linked > that to the application, along with -llttng-ust. This results in some > warnings: > > tracepoints.o: warning: common of `handle' overridden by definition > /usr/local/lib/liblttng-ust.so: warning: defined here > tracepoints.o: warning: common of `lttng_client_callbacks_overwrite' overridden > +by definition > /usr/local/lib/liblttng-ust.so: warning: defined here > tracepoints.o: warning: common of `lttng_client_callbacks_discard' overridden by > +definition > /usr/local/lib/liblttng-ust.so: warning: defined here > tracepoints.o: warning: common of `lttng_client_callbacks_metadata' overridden > +by definition > /usr/local/lib/liblttng-ust.so: warning: defined here > /usr/local/lib/liblttng-ust-tracepoint.so.0: warning: multiple common of > +`handle' > tracepoints.o: warning: previous common is here > > This seems to be a valid warning. The LTTng UST headers contain > definitions like this in include/lttng/ringbuffer-config.h: > struct lttng_ust_shm_handle *handle; > > If two objects use that header, each will get a copy of "handle", right? handle: This was meant to be a forward declaration of struct lttng_ust_shm_handle so just removing the "*handle" part. This can be considered as a cleanup (or a fix without actual runtime effect). lttng_client_callbacks_*: if the cb values would have been used in the consumer daemon, this would have caused an issue: these would be set to NULL instead of the actual callback pointers. So in a way this is a fix, but it does not have any runtime impact at this point. Reported-by: Hollis Blanchard <[email protected]> Signed-off-by: Mathieu Desnoyers <[email protected]> -- Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
