• Russell King's avatar
    kbuild: fix headers_exports with boolean expression · eedc9d83
    Russell King authored
    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: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
    eedc9d83
unifdef.c 29.5 KB