[ltt-dev] [Qemu-devel] [PATCH 2/3] trace: [ust] Do not use 'm' in event argument names (used by ust macros)

Stefan Hajnoczi stefanha at gmail.com
Tue Sep 20 10:41:02 EDT 2011


2011/9/20 Mathieu Desnoyers <compudj at krystal.dyndns.org>:
> * Lluís Vilanova (vilanova at ac.upc.edu) wrote:
>> Stefan Hajnoczi writes:
>>
>> > On Fri, Sep 16, 2011 at 06:59:38PM +0200, Lluís Vilanova wrote:
>> >> Signed-off-by: Lluís Vilanova <vilanova at ac.upc.edu>
>> >> ---
>> >> trace-events |    4 ++--
>> >> 1 files changed, 2 insertions(+), 2 deletions(-)
>> >>
>> >> diff --git a/trace-events b/trace-events
>> >> index 9d1fbbb..b653d70 100644
>> >> --- a/trace-events
>> >> +++ b/trace-events
>> >> @@ -418,8 +418,8 @@ milkymist_pfpu_pulse_irq(void) "Pulse IRQ"
>> >> # hw/milkymist-softusb.c
>> >> milkymist_softusb_memory_read(uint32_t addr, uint32_t value) "addr %08x value %08x"
>> >> milkymist_softusb_memory_write(uint32_t addr, uint32_t value) "addr %08x value %08x"
>> >> -milkymist_softusb_mevt(uint8_t m) "m %d"
>> >> -milkymist_softusb_kevt(uint8_t m) "m %d"
>> >> +milkymist_softusb_mevt(uint8_t _m) "m %d"
>> >> +milkymist_softusb_kevt(uint8_t _m) "m %d"
>>
>> > The LTTng community has been very responsive in addressing namespace
>> > issues with libust.  Let's post more details and see if it can be fixed
>> > in libust.
>>
>> > Could you please post your gcc and libust versions?
>>
>> > I have not been able to reproduce the problem on Debian libust-dev
>> > 0.15-3.  My gcc version is Debian gcc 4.6.1-4.
>>
>> Yup, I was using libust-dev 0.5 (debian stable). After switching to 0.15 (debian
>> testing) other problems arise.
>>
>> For example, in my box compiling osdep.c yields lots of "variable ‘__tp_cb_data’
>> set but not used", but using a minimal example does not raise such problems, so
>> I'm assuming this is related to some namespace problems related to some other
>> code in qemu's headers.
>
> If you can find a few minutes to provide:
>
> 1) a link to the git repository/commit ID you are testing
> 2) the exact configuration you use (detailed way to reproduce the
>   problem, as a sequence of commands from a pristine repository)
>
> It will allow me to look into this warning and fix it.

AFAICT the only problem with libust is the __tp_cb_data set but not
used warning that gcc 4.6 emits, see my test program:

#include <stdint.h>
#include <ust/tracepoint.h>

DECLARE_TRACE(ust_milkymist_softusb_mevt, TP_PROTO(uint8_t m),
TP_ARGS(m));

int main(int argc, char **argv)
{
       return 0;
}

You will get an error with gcc 4.6 and libust 0.15:

$ gcc -o a -Wall a.c

QEMU itself does have one problem with libust 0.15.  We do
DECLARE_TRACE(name, TP_PROTO(void), TP_ARGS()).  This results in a
compiler error but we can fix this my changing our tracepoints to use
DECLARE_TRACE(name, TP_PROTO(), TP_ARGS()) I think.  Perhaps libust's
behavior here has changed, it shouldn't be hard to update QEMU's
tracetool tracepoint generator though.

If you adapt the example program I used above to use TP_PROTO(void),
TP_ARGS() then you get this error:

a.c: In function ‘__trace_ust_milkymist_softusb_mevt’:
a.c:4:1: error: expected declaration specifiers or ‘...’ before ‘)’ token
a.c:4:1: error: expected ‘)’ before ‘__tp_it_func’
a.c:4:1: error: expected expression before ‘)’ token
a.c:4:1: warning: variable ‘__tp_it_func’ set but not used
[-Wunused-but-set-variable]
a.c: At top level:
a.c:4:1: error: expected declaration specifiers or ‘...’ before ‘)’ token
a.c:4:1: error: expected ‘;’, ‘,’ or ‘)’ before ‘void’
a.c:4:1: error: expected declaration specifiers or ‘...’ before ‘)’ token
a.c:4:1: error: expected ‘;’, ‘,’ or ‘)’ before ‘void’
a.c: In function ‘trace_ust_milkymist_softusb_mevt’:
a.c:4:1: warning: variable ‘__tp_cb_data’ set but not used
[-Wunused-but-set-variable]

I can't say for sure whether I ever tested old libust versions with
void tracepoints.  Perhaps we simply never had any and the tracetool
generator has always been broken.  Or perhaps libust changed its
behavior.

Stefan




More information about the lttng-dev mailing list