libfdt: Abolish _typed() variants, add _cell() variants

Jon Loeliger jdl at
Wed Nov 21 02:06:46 EST 2007

So, like, the other day David Gibson mumbled:
> In a number of places through libfdt and its tests, we have *_typed()
> macro variants on functions which use gcc's typeof and statement
> expression extensions to allow passing literals where the underlying
> function takes a buffer and size.
> These seemed like a good idea at the time, but in fact they have some
> problems.  They use typeof and statement expressions, extensions I'd
> prefer to avoid for portability.  Plus, they have potential gotchas -
> although they'll deal with the size of the thing passed, they won't
> deal with other representation issues (like endianness) and results
> could be very strange if the type of the expression passed isn't what
> you think it is.
> In fact, the only users of these _typed() macros were when the value
> passed is a single cell (32-bit integer).  Therefore, this patch
> removes all these _typed() macros and replaces them with explicit
> _cell() variants which handle a single 32-bit integer, and which also
> perform endian convesions as appropriate.
> With this in place, it now becomes easy to use standardized big-endian
> representation for integer valued properties in the testcases,
> regardless of the platform we're running on.  We therefore do that,
> which has the additional advantage that all the example trees created
> during a test run are now byte-for-byte identical regardless of
> platform.
> Signed-off-by: David Gibson <david at>



More information about the Linuxppc-dev mailing list