On Tue, 12 Dec 2006 at 12:02 -0800, Linus Torvalds wrote: > On Tue, 12 Dec 2006, Linus Torvalds wrote: > > > > Did you use "-m64" if you are doing this on an architecture with 64-bit > > /usr/include? > > Never mind, that's not it. > > The problem is that the standard headers use _this_ for "int64_t": > > typedef int int64_t __attribute__ ((__mode__ (__DI__))); > > and sparse just says "ok, int64_t is an 'int'" > > The "__attribute__((__mode__()))" thing has always been a quick hack - > sparse actually tries to parse it, but not very well. > > If you use > > typedef long long s64; > > sparse gets it right. > > In fact, sparse even gets it right if you do > > typedef int __attribute__((__mode__(__DI__))) int64_t; > > because then the attribute gets attached to the underlying type, before it > gets bound to the typedef. Great! This works for me. So I will probably use #ifdef __CHECKER__ typedef int __attribute__((__mode__(__DI__))) int64_t; #endif until it will be fixed in sparse. > I'll take a look if I can fix typedef to accept the crapola __attibute__ > syntax. > > Putting the attributes at the end really _does_ suck. It's as if you were > to write > > typedef void * const_ptr_t const; > > and that obviously isn't supposed to work. Why gcc thinks attributes can > go at the end will never be clear to me. > > Gcc attributes suck. Some gcc extensions really were thought out really > really badly. Thanks for quick reply and explanations! -- Best regards, Yura - To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html