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

Re: [Xen-devel] stdbool.h -nostdinc XSA-55 trouble



On Fri, Aug 09, 2013 at 08:50:32AM +0100, Jan Beulich wrote:
> That would make sense only if we could also do the same for
> stdarg.h, but you'll note that xen/stdarg.h already works around
> the same problem on NetBSD and OpenBSD. Going through the
> history of xen/stdarg.h also shows that this has been a recurring
> problem. It escapes me why they can't just play things the gcc
> way if gcc is their compiler.

The plan is to use llvm/clang - I haven't tried it, though others
already use it as their default compiler (the OS certainly builds).

> I.e. either we allow ourselves to use standard headers that are
> defining only compiler determined things (in which case we could
> also use stdint.h for example), or we don't use _any_ standard
> headers.
> 
> > I'd be a bit concerned about the fact that Xen's bool_t is a typedef for
> > char, as opposed to the compilers typedef to _Bool which has special
> > meaning. It may not matter in practice but might the fact that _Bool
> > canonicalises to 0 or 1 vs. 0 or !0 cause something subtle?
> 
> No, that won't work without auditing the code: Non-boolean
> expression results will be converted to 0/1 by the compiler when
> the lvalue's type is _Bool, but won't when it's bool_t. While that
> might seem fine at the first glance as long as consumers of such
> variables don't do explicit == 1 checks, this is becoming a problem
> when the non-boolean result is 0 modulo 256 (since the conversion
> done in the non-_Bool case is a truncation).

I'm sorry, I still don't see how I can write code which exhibits the
problem case... Could I have a 1A supervision please?

Cheers,

Patrick

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.