Re: [PATCH v2 1/1] trace2: NULL is not allowed for va_list
- From
- Jeff Hostetler <git@jeffhostetler.com>
- Date
- Mar 19, 2019, 18:03 UTC
- Message-ID
- <1899eb63-c986-6c18-d09e-9b1584f471d0@jeffhostetler.com>
- In-Reply-To
- <20190319171347.7677-1-tboegi@web.de>
On 3/19/2019 1:13 PM, tboegi@web.de wrote:
Show 22 quoted lines
> From: Torsten Bögershausen <tboegi@web.de>
>
> Some compilers don't allow NULL to be passed for a va_list,
> and e.g. "gcc (Raspbian 6.3.0-18+rpi1+deb9u1) 6.3.0 20170516"
> errors out like this:
> trace2/tr2_tgt_event.c:193:18:
> error: invalid operands to binary &&
> (have ‘int’ and ‘va_list {aka __va_list}’)
> if (fmt && *fmt && ap) {
> ^^
> I couldn't find any hints that va_list and pointers can be mixed,
> and no hints that they can't either. Morten Welinder comments:
>
> "C99, Section 7.15, simply says that va_list "is an object type suitable for
> holding information needed by the macros va_start, va_end, and
> va_copy". So clearly not guaranteed to be mixable with pointers...
>
> The portable solution is to use "va_list" everywhere in the callchain.
> As a consequence, both trace2_region_enter_fl() and trace2_region_leave_fl()
> now take a variable argument list.
>
> Signed-off-by: Torsten Bögershausen <tboegi@web.de>Looks good. Thanks for tracking this down. Jeff
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>