kbuild: fix headers_exports with boolean expression
authorRussell King <rmk+lkml@arm.linux.org.uk>
Sat, 6 Jun 2009 21:47:11 +0000 (22:47 +0100)
committerSam Ravnborg <sam@ravnborg.org>
Tue, 9 Jun 2009 20:37:57 +0000 (22:37 +0200)
commiteedc9d83eaab2d35fb9dd1ec25b765dec964e26c
tree0ac52787334de2da7852f70a4d6822e6cb291a68
parent67b7ebe091cd92fd69f732da3170720d79c4e632
kbuild: fix headers_exports with boolean expression

When we had code like this in a header unifdef failed to
deduct that the expression was always false - and we had code exported
that was not intended for userspace.

#if defined(__KERNEL__) && !defined(__ASSEMBLY__)
  int a;
#endif

This commit implment support in unidef which allows it to work out if
an #if expression always evaluates true or false for symbols which
are being undefined/always defined.

The patch is slightly more complicated than I'd hoped because unifdef
needs to see lines fully evaluated - doing otherwise causes it to
mark the line as "dirty" and copy it over no matter what.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
scripts/unifdef.c