This is an updated set with most of the comments now fixed, but a few issues that could do with looking at before finalising the code. 1- the ctype fix doesn't work for prefixed __attrbitue__ 2- do we need an 'ASN-any' type for pointers? (the asn-any is for the case printf %p, where the value of the pointer is printed, and it is not de-refrenced)... maybe using asn:-1 for "any address space" is a good idea? The only things to discuss: - is the printf format parsing good enough? - do we need to add a a __attribute__((linux-printk)) for printk fmts? - should we add a -Wvariadic-format to force address-space safety? I think this is getting close to merging.