-warn-common with lttng-ust 2.0.2
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 17 lines · * 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 oflttng_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 ofhandle' tracepoints.o: warning: previous common is here
Quoted 5 lines
This seems to be a valid warning. The LTTng UST headers contain definitions like this in
include/lttng/ringbuffer-config.h:
structlttng_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.
Signature · 4 lines
Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com