These patches improve/complete the parsing of the lenght and the type modifiers and, more importantly, add specific checking functions for all the types, replacing the use of check_assignment_types() which don't do the kind of type checking needed here (and which evaluate expressions, something not needed and which complicate the interface a lot). These checking functions are not yet complete but are a solid base for some further improvements. They already allow to use 'sparse -Wformat' on the kernel without false positive and can detect of a few errors. The series is available for review & testing at: git://github.com/lucvoo/sparse-dev.git format-check Luc Van Oostenryck (13): format-check: void * is not OK for strings, fix the test format-check: more complete parsing of the length & type modifiers format-check: add helper type_class() format-check: merge 'fmt_string' & 'string' format-check: remove unneeded member: target format-check: add a function to check to type of strings format-check: add a function to check to type of 'n' arguments format-check: add a function to check to type of pointers format-check: remove printf_fmt_print_pointer() format-check: add a function to check the type of floats format-check: add a function to check the type of integers format-check: remove wrappers around type checking methods format-check: simplify calling of parse_printf_get_fmt() validation/varargs-format-addrspace1.c | 12 +- verify-format.c | 496 ++++++++++++++++--------- 2 files changed, 323 insertions(+), 185 deletions(-) -- 2.28.0