From: Jeff Hostetler Date: Tue, 19 Mar 2019 18:03:32 GMT Subject: Re: [PATCH v2 1/1] trace2: NULL is not allowed for va_list 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: > From: Torsten Bögershausen > > 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 Looks good. Thanks for tracking this down. Jeff Signed-off-by: Jeff Hostetler