type_val: introduce storing struct member limits
This code is still a bit experimental and new. The main problem is that it
doesn't limit things enough, which means that it's not as useful as it
could be, but it doesn't introduce false positives.
What it does is it records every time a struct member is modified. It
stores that the possible values of that struct member. Then after we have
compiled the kernel we take all the places where the struct member is set
and take the total possible values and store that in a different table.
The smdb.py part of this is very useful to see where the struct member is
modified.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>