Sparse prints a lot of warnings like this for user-space projects: /usr/lib/gcc/i486-linux-gnu/4.3.2//include-fixed/limits.h:33:22: warning: undefined preprocessor identifier '__INT_MAX__' /usr/lib/gcc/i486-linux-gnu/4.3.2//include-fixed/limits.h:64:5: warning: undefined preprocessor identifier '__SHRT_MAX__' /usr/lib/gcc/i486-linux-gnu/4.3.2//include-fixed/limits.h:64:21: warning: undefined preprocessor identifier '__INT_MAX__' /usr/include/bits/xopen_lim.h:95:6: warning: undefined preprocessor identifier '__INT_MAX__' /usr/include/bits/xopen_lim.h:98:7: warning: undefined preprocessor identifier '__INT_MAX__' Fix that up by defining some GCC pre-processor builtins. Signed-off-by: Pekka Enberg <penberg@xxxxxxxxxxxxxx> --- ident-list.h | 7 +++++++ pre-process.c | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+), 0 deletions(-) diff --git a/ident-list.h b/ident-list.h index 0ee81bc..c0a2735 100644 --- a/ident-list.h +++ b/ident-list.h @@ -99,6 +99,13 @@ __IDENT(__func___ident, "__func__", 0); __IDENT(__FUNCTION___ident, "__FUNCTION__", 0); __IDENT(__PRETTY_FUNCTION___ident, "__PRETTY_FUNCTION__", 0); +__IDENT(__SCHAR_MAX__ident, "__SCHAR_MAX__", 0); +__IDENT(__SHRT_MAX__ident, "__SHRT_MAX__", 0); +__IDENT(__INT_MAX__ident, "__INT_MAX__", 0); +__IDENT(__LONG_MAX__ident, "__LONG_MAX__", 0); +__IDENT(__LONG_LONG_MAX__ident, "__LONG_LONG_MAX__", 0); +__IDENT(__WCHAR_MAX__ident, "__WCHAR_MAX__", 0); + /* Sparse commands */ IDENT_RESERVED(__context__); IDENT_RESERVED(__range__); diff --git a/pre-process.c b/pre-process.c index 34b21ff..de3d3f1 100644 --- a/pre-process.c +++ b/pre-process.c @@ -106,6 +106,14 @@ static void replace_with_integer(struct token *token, unsigned int val) token->number = buf; } +static void replace_with_long_long(struct token *token, unsigned long long val) +{ + char *buf = __alloc_bytes(20); + sprintf(buf, "%llu", val); + token_type(token) = TOKEN_NUMBER; + token->number = buf; +} + static struct symbol *lookup_macro(struct ident *ident) { struct symbol *sym = lookup_symbol(ident, NS_MACRO | NS_UNDEF); @@ -167,6 +175,18 @@ static int expand_one_symbol(struct token **list) time(&t); strftime(buffer, 9, "%T", localtime(&t)); replace_with_string(token, buffer); + } else if (token->ident == &__SHRT_MAX__ident) { + replace_with_integer(token, __SHRT_MAX__); + } else if (token->ident == &__SCHAR_MAX__ident) { + replace_with_integer(token, __SCHAR_MAX__); + } else if (token->ident == &__INT_MAX__ident) { + replace_with_integer(token, __INT_MAX__); + } else if (token->ident == &__LONG_MAX__ident) { + replace_with_integer(token, __LONG_MAX__); + } else if (token->ident == &__LONG_LONG_MAX__ident) { + replace_with_long_long(token, __LONG_LONG_MAX__); + } else if (token->ident == &__WCHAR_MAX__ident) { + replace_with_integer(token, __WCHAR_MAX__); } return 1; } -- 1.5.6.3 -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html