[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