qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 4/4] tracetool: show trace-events filename/lineno in fmt stri


From: Peter Maydell
Subject: Re: [PATCH 4/4] tracetool: show trace-events filename/lineno in fmt string errors
Date: Thu, 27 Aug 2020 15:59:04 +0100

On Thu, 27 Aug 2020 at 15:29, Stefan Hajnoczi <stefanha@redhat.com> wrote:
>
> The compiler encounters trace event format strings in generated code.
> Format strings are error-prone and therefore clear compiler errors are
> important.
>
> Use the #line directive to show the trace-events filename and line
> number in format string errors:
> https://gcc.gnu.org/onlinedocs/gcc-10.2.0/cpp/Line-Control.html
>
> For example, if the cpu_in trace event's %u is changed to %p the
> following error is reported:
>
>   trace-events:29:18: error: format ‘%p’ expects argument of type ‘void *’, 
> but argument 7 has type ‘unsigned int’ [-Werror=format=]
>
> Line 29 in trace-events is where cpu_in is defined. This works for any
> trace-events file in the QEMU source tree and the correct path is
> displayed.
>
> Unfortunately there does not seem to be a way to set the column, so "18"
> is not the right character on that line.

It's been pointed out to me that you could do this by
making the generated code have suitable line breaks, padding,
etc, so that the format string in the output ends up starting in
the same column it was in the input trace file. Whether this is
worthwhile I leave up to you :-)

(The argument number (7 in your example) is also of course off,
and that I think we're also stuck with. Getting the file and line
number right is a solid improvement on the current situation.)

thanks
-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]