Am 25.01.2015 um 21:12 schrieb Christian Borntraeger: > Am 24.01.2015 um 00:59 schrieb Luc Van Oostenryck: > [...] >> Yes, indeed. >> Thanks for bringing to my attention. >> >> Here is a new version of the patch taking care of that. >> >> >> Luc >> >> --- >> Subject: [PATCH] Teach sparse about the __COUNTER__ predefined macro. >> >> This macro expands to sequential integral values starting from 0, >> and this for each top-level source file. >> >> Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> > > Tested-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> Christoper, can you apply that fix as well? Thans > >> --- >> ident-list.h | 1 + >> pre-process.c | 4 ++++ >> validation/preprocessor/counter1.c | 12 ++++++++++++ >> validation/preprocessor/counter2.c | 14 ++++++++++++++ >> validation/preprocessor/counter2.h | 1 + >> validation/preprocessor/counter3.c | 13 +++++++++++++ >> 6 files changed, 45 insertions(+) >> create mode 100644 validation/preprocessor/counter1.c >> create mode 100644 validation/preprocessor/counter2.c >> create mode 100644 validation/preprocessor/counter2.h >> create mode 100644 validation/preprocessor/counter3.c >> >> diff --git a/ident-list.h b/ident-list.h >> index d5a145f8..b65b667d 100644 >> --- a/ident-list.h >> +++ b/ident-list.h >> @@ -108,6 +108,7 @@ __IDENT(__TIME___ident, "__TIME__", 0); >> __IDENT(__func___ident, "__func__", 0); >> __IDENT(__FUNCTION___ident, "__FUNCTION__", 0); >> __IDENT(__PRETTY_FUNCTION___ident, "__PRETTY_FUNCTION__", 0); >> +__IDENT(__COUNTER___ident, "__COUNTER__", 0); >> >> /* Sparse commands */ >> IDENT_RESERVED(__context__); >> diff --git a/pre-process.c b/pre-process.c >> index 1aa3d2c4..601e0f26 100644 >> --- a/pre-process.c >> +++ b/pre-process.c >> @@ -45,6 +45,7 @@ >> #include "scope.h" >> >> static int false_nesting = 0; >> +static int counter_macro; // __COUNTER__ expansion >> >> #define INCLUDEPATHS 300 >> const char *includepath[INCLUDEPATHS+1] = { >> @@ -181,6 +182,8 @@ 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 == &__COUNTER___ident) { >> + replace_with_integer(token, counter_macro++); >> } >> return 1; >> } >> @@ -1882,6 +1885,7 @@ static void init_preprocessor(void) >> sym->normal = 0; >> } >> >> + counter_macro = 0; >> } >> >> static void handle_preprocessor_line(struct stream *stream, struct token **line, struct token *start) >> diff --git a/validation/preprocessor/counter1.c b/validation/preprocessor/counter1.c >> new file mode 100644 >> index 00000000..98187ee6 >> --- /dev/null >> +++ b/validation/preprocessor/counter1.c >> @@ -0,0 +1,12 @@ >> +__COUNTER__ >> +__COUNTER__ >> +/* >> + * check-name: __COUNTER__ #1 >> + * check-command: sparse -E $file >> + * >> + * check-output-start >> + >> +0 >> +1 >> + * check-output-end >> + */ >> diff --git a/validation/preprocessor/counter2.c b/validation/preprocessor/counter2.c >> new file mode 100644 >> index 00000000..9883b682 >> --- /dev/null >> +++ b/validation/preprocessor/counter2.c >> @@ -0,0 +1,14 @@ >> +__FILE__ __COUNTER__ >> +#include <counter2.h> >> +__FILE__ __COUNTER__ >> +/* >> + * check-name: __COUNTER__ #2 >> + * check-command: sparse -Ipreprocessor -E $file >> + * >> + * check-output-start >> + >> +"preprocessor/counter2.c" 0 >> +"preprocessor/counter2.h" 1 >> +"preprocessor/counter2.c" 2 >> + * check-output-end >> + */ >> diff --git a/validation/preprocessor/counter2.h b/validation/preprocessor/counter2.h >> new file mode 100644 >> index 00000000..447b70ab >> --- /dev/null >> +++ b/validation/preprocessor/counter2.h >> @@ -0,0 +1 @@ >> +__FILE__ __COUNTER__ >> diff --git a/validation/preprocessor/counter3.c b/validation/preprocessor/counter3.c >> new file mode 100644 >> index 00000000..1449b2d1 >> --- /dev/null >> +++ b/validation/preprocessor/counter3.c >> @@ -0,0 +1,13 @@ >> +/* >> + * check-name: __COUNTER__ #3 >> + * check-command: sparse -Ipreprocessor -E preprocessor/counter1.c preprocessor/counter2.c >> + * >> + * check-output-start >> + >> +0 >> +1 >> +"preprocessor/counter2.c" 0 >> +"preprocessor/counter2.h" 1 >> +"preprocessor/counter2.c" 2 >> + * check-output-end >> + */ >> > -- 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