On Thu, Jul 03, 2014 at 11:00:45AM +0200, Alessandro Rubini wrote: > > static variables are initialized to 0 (for pointers: NULL) by the > > compiler. > > Well, not really. The compiler just places them in the .bss area. It > is barebox, it is run-time initialization, that zeroes bss. > > So it is barebox, not the compiler. Yeah, in general it's even worse because there might be platforms where NULL isn't represented by a literal 0. (Not sure if something like this exists, but it's allowed by the standard.) C99 tells us: If an object that has automatic storage duration is not initialized explicitly, its value is indeterminate. If an object that has static storage duration is not initialized explicitly, then: - if it has pointer type, it is initialized to a null pointer; - if it has arithmetic type, it is initialized to (positive or unsigned) zero; - if it is an aggregate, every member is initialized (recursively) according to these rules; - if it is a union, the first named member is initialized (recursively) according to these rules. I assume it's included in earlier standards, too, but I don't have these handy. Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | http://www.pengutronix.de/ | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox