Skip to contentSkip to conversation

-warn-common with lttng-ust 2.0.2

DISCUSSION Mathieu Desnoyers 1 participant 1 message Jun 8, 2012 1 message not in the archive

lore
Share & tools
lore
#1 lore raw
In reply to a message not in the archive
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 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

Quoted 5 lines

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.

Signature · 4 lines
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com