On Thu, 2007-07-05 at 20:52 +0300, Yura Pakhuchiy wrote: > I updated libntfs/ntfsprogs to use sparse for checking endianness. > Thanks much for this feature, it very useful. Helped to find several > bugs in our project. Very glad to hear it! > The only problem is 2 annoying lines in glibc and gnupg headers that > sparse-0.3 do not like: > > 1. Sparse do not like __restrict_attr inside regexec() definition in > regex.h. Relevant code: > > extern int regexec (const regex_t *__restrict __preg, > const char *__restrict __string, size_t __nmatch, > regmatch_t __pmatch[__restrict_arr], > int __eflags); > > Produces following error: > /usr/include/regex.h:543:27: error: typename in expression > /usr/include/regex.h:543:27: error: undefined identifier '__restrict' > /usr/include/regex.h:543:27: error: bad constant expression type > > (Note: __restrict_arr is defined to __restrict) Right. I've run into the same error, and I have this on my todo list to fix. Sparse just needs to parse and ignore restrict and __restrict in array declarations like that. > 2. And sparse do not know about attribute __constructor__ inside > gpg-error.h. Relevant code: > > #if _GPG_ERR_GCC_VERSION > 30100 > #define _GPG_ERR_CONSTRUCTOR __attribute__ ((__constructor__)) > #define _GPG_ERR_HAVE_CONSTRUCTOR > #endif > #endif > > #ifndef _GPG_ERR_CONSTRUCTOR > #define _GPG_ERR_CONSTRUCTOR > #endif > > /* Initialization function. */ > > /* Initialize the library. This function should be run early. */ > gpg_error_t gpg_err_init (void) _GPG_ERR_CONSTRUCTOR; Latest sparse from git already parses and ignores the constructor and destructor attributes, and their double-underscore variants. > I would really happy if you will fix this. Thanks! No problem. Thanks for using Sparse; glad to hear that it helped you! - Josh Triplett - 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