[ltt-dev] Problem when compiling UST from git
pierre-marc.fournier at polymtl.ca
Tue Dec 8 14:24:32 EST 2009
christian.charreyre at free.fr wrote:
> If I comment the 2 lines of _DEFINE_MARKER() as suggested by Pierre-Marc, marker.c compiles well on x86 arch.
> Nevertheless, there is 2 additional problems on such environment :
> 1/ in libust/buffers.c, there is a struct ltt_channel_buf_struct in save_last_tsc (line 253) and last_tsc_overflow (line 258) that generates an error because this type is not defined.
> I've replaced them by struct ust_buffer as in the other case of the #if (BITS_PER_LONG == 32) test, and it seems to compile well.
> Is it ok ?
I had this fix queued. It is now pushed. You don't even need conditional
> 2/ at the final link of the library, there is an undefined reference :
> libtool: link: gcc -shared .libs/libust_la-marker.o .libs/libust_la-tracepoint.o .libs/libust_la-channels.o .libs/libust_la-marker-control.o .libs/libust_la-buffers.o .libs/libust_la-tracer.o .libs/libust_la-tracercore.o .libs/libust_la-serialize.o .libs/libust_la-tracectl.o .libs/libust_la-ustcomm.o -lpthread -lurcu-bp -Wl,-soname -Wl,libust.so.0 -o .libs/libust.so.0.0.0
> .libs/libust_la-marker.o: In function `init_markers':
> /media/cio-linux/LTTng/ust/libust/marker.c:1548: undefined reference to `__start___marker_addr'
> /usr/bin/ld: .libs/libust_la-marker.o: relocation R_386_GOTOFF against undefined hidden symbol `__start___marker_addr' can not be used when making a shared object
> /usr/bin/ld: final link failed: Bad value
> collect2: ld returned 1 exit status
> make: *** [libust.la] Erreur 1
> make: quittant le répertoire « /media/cio-linux/LTTng/ust/libust »
> make: *** [all-recursive] Erreur 1
> make: quittant le répertoire « /media/cio-linux/LTTng/ust »
> make: *** [all] Erreur 2
> I've tried to understand but didn't : __start___marker_addr is defined the same way than __start___markers in the following code :
> extern struct marker __start___markers __attribute__((visibility("hidden")));
> extern struct marker __stop___markers __attribute__((visibility("hidden")));
> extern struct marker_addr __start___marker_addr __attribute__((visibility("hidden")));
> extern struct marker_addr __stop___marker_addr __attribute__((visibility("hidden")));
> but it seems that __start___markers doesn't cause problems as __start___marker_addr does.
> Any hint on this last point ?
Right. This is a consequence of the asm not working. Now I fixed this
completely by adding conditional compilation for gdb integration. You
should be able to compile now. I made this fix a bit quickly because I
have other commits queued to really fix gdb integration for x86-32.
BTW, you need to use lttv commit
d081dd5e8ed6055ba524e663c9976fda51147399 because ust has not yet been
ported to trace format 2.5 yet. (And the lttv head requires it.)
More information about the lttng-dev