Allows building sparse to avert reporting semantic problems, e.g. using sparse as a tokenizer to create a graph of KABI symbols and their dependencies. Signed-off-by: Tony Camuso <tcamuso@xxxxxxxxxx> --- lib.c | 21 +++++++++++++++++++++ parse.c | 12 ++++++++++++ 2 files changed, 33 insertions(+) diff --git a/lib.c b/lib.c index 8dc5bcf..cb10bce 100644 --- a/lib.c +++ b/lib.c @@ -48,6 +48,13 @@ int verbose, optimize, optimize_size, preprocessing; int die_if_error = 0; +#ifdef NOWARN +#pragma message "Built with NOWARN" +#endif +#ifdef NOERR +#pragma message "Built with NOERR" +#endif + #ifndef __GNUC__ # define __GNUC__ 2 # define __GNUC_MINOR__ 95 @@ -103,6 +110,9 @@ unsigned int hexval(unsigned int c) static void do_warn(const char *type, struct position pos, const char * fmt, va_list args) { +#ifdef NOWARN + return; +#else static char buffer[512]; const char *name; @@ -111,9 +121,12 @@ static void do_warn(const char *type, struct position pos, const char * fmt, va_ fprintf(stderr, "%s:%d:%d: %s%s\n", name, pos.line, pos.pos, type, buffer); +#endif } +#ifndef NOWARN static int max_warnings = 100; +#endif static int show_info = 1; void info(struct position pos, const char * fmt, ...) @@ -129,6 +142,9 @@ void info(struct position pos, const char * fmt, ...) static void do_error(struct position pos, const char * fmt, va_list args) { +#ifdef NOERR + return; +#else static int errors = 0; die_if_error = 1; show_info = 1; @@ -145,10 +161,14 @@ static void do_error(struct position pos, const char * fmt, va_list args) do_warn("error: ", pos, fmt, args); errors++; +#endif } void warning(struct position pos, const char * fmt, ...) { +#ifdef NOWARN + return; +#else va_list args; if (Wsparse_error) { @@ -171,6 +191,7 @@ void warning(struct position pos, const char * fmt, ...) va_start(args, fmt); do_warn("warning: ", pos, fmt, args); va_end(args); +#endif } void sparse_error(struct position pos, const char * fmt, ...) diff --git a/parse.c b/parse.c index 02275d8..f773fe8 100644 --- a/parse.c +++ b/parse.c @@ -44,6 +44,13 @@ #include "expression.h" #include "target.h" +#ifdef NOWARN +#pragma message "Built with NOWARN" +#endif +#ifdef NOERR +#pragma message "Built with NOERR" +#endif + static struct symbol_list **function_symbol_list; struct symbol_list *function_computed_target_list; struct statement_list *function_computed_goto_list; @@ -2746,8 +2753,13 @@ struct token *external_declaration(struct token *token, struct symbol_list **lis /* Just a type declaration? */ if (!ident) { + +#if defined NOWARN || defined NOERR + return token->next; +#else warning(token->pos, "missing identifier in declaration"); return expect(token, ';', "at the end of type declaration"); +#endif } /* type define declaration? */ -- 2.4.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