* [PATCH v2 0/3] reduce noise from unknown attributes @ 2016-11-02 23:07 Luc Van Oostenryck 2016-11-02 23:07 ` [PATCH v2 1/3] Warn on unknown attributes instead of throwing errors Luc Van Oostenryck ` (3 more replies) 0 siblings, 4 replies; 6+ messages in thread From: Luc Van Oostenryck @ 2016-11-02 23:07 UTC (permalink / raw) To: linux-sparse; +Cc: Christopher Li, Luc Van Oostenryck Currently sparse throws error each time at each unknown attributes. As GCC often creates new attributes, generaly for specific usages irrelevant to what sparse is used for. The errors from these not-yet-known attributes create needless noise and annoyance for no benefits. This series aims at reduce this noise by doing 3 things: * change the error to a warning * add a new flag to disable or enable warnings from those attributes * by default set this flag as disabled Change from v1: - compile fix for a patch splitting leftover - each patch depends on the previous one Luc Van Oostenryck (3): Warn on unknown attributes instead of throwing errors Add a new warning flag: '-Wunknown-attribute' By default disable the new warning flag '-Wunknown-attribute' lib.c | 2 ++ lib.h | 1 + parse.c | 3 ++- validation/Wunknown-attribute-def.c | 8 ++++++++ validation/Wunknown-attribute-no.c | 9 +++++++++ validation/Wunknown-attribute-yes.c | 10 ++++++++++ 6 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 validation/Wunknown-attribute-def.c create mode 100644 validation/Wunknown-attribute-no.c create mode 100644 validation/Wunknown-attribute-yes.c -- 2.10.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/3] Warn on unknown attributes instead of throwing errors 2016-11-02 23:07 [PATCH v2 0/3] reduce noise from unknown attributes Luc Van Oostenryck @ 2016-11-02 23:07 ` Luc Van Oostenryck 2016-11-02 23:07 ` [PATCH v2 2/3] Add a new warning flag: '-Wunknown-attribute' Luc Van Oostenryck ` (2 subsequent siblings) 3 siblings, 0 replies; 6+ messages in thread From: Luc Van Oostenryck @ 2016-11-02 23:07 UTC (permalink / raw) To: linux-sparse; +Cc: Christopher Li, Luc Van Oostenryck GCC creates new attributes quite often, generaly for specific usages irrelevant to what sparse is used for. Throwing errors on these create needless noise and annoyance and seriously reduce sparse's usefulness, especially on big projects. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> --- parse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parse.c b/parse.c index 205e1264..d1aa83b4 100644 --- a/parse.c +++ b/parse.c @@ -1230,7 +1230,7 @@ static struct token *recover_unknown_attribute(struct token *token) { struct expression *expr = NULL; - sparse_error(token->pos, "attribute '%s': unknown attribute", show_ident(token->ident)); + warning(token->pos, "attribute '%s': unknown attribute", show_ident(token->ident)); token = token->next; if (match_op(token, '(')) token = parens_expression(token, &expr, "in attribute"); -- 2.10.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/3] Add a new warning flag: '-Wunknown-attribute' 2016-11-02 23:07 [PATCH v2 0/3] reduce noise from unknown attributes Luc Van Oostenryck 2016-11-02 23:07 ` [PATCH v2 1/3] Warn on unknown attributes instead of throwing errors Luc Van Oostenryck @ 2016-11-02 23:07 ` Luc Van Oostenryck 2016-11-02 23:07 ` [PATCH v2 3/3] By default disable the new warning flag '-Wunknown-attribute' Luc Van Oostenryck 2016-11-17 17:06 ` [PATCH v2 0/3] reduce noise from unknown attributes Christopher Li 3 siblings, 0 replies; 6+ messages in thread From: Luc Van Oostenryck @ 2016-11-02 23:07 UTC (permalink / raw) To: linux-sparse; +Cc: Christopher Li, Luc Van Oostenryck So, we can choose if we're interested by those warnings or not. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> --- lib.c | 2 ++ lib.h | 1 + parse.c | 3 ++- validation/Wunknown-attribute-def.c | 9 +++++++++ validation/Wunknown-attribute-no.c | 9 +++++++++ validation/Wunknown-attribute-yes.c | 10 ++++++++++ 6 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 validation/Wunknown-attribute-def.c create mode 100644 validation/Wunknown-attribute-no.c create mode 100644 validation/Wunknown-attribute-yes.c diff --git a/lib.c b/lib.c index d5b56b01..138736e7 100644 --- a/lib.c +++ b/lib.c @@ -240,6 +240,7 @@ int Wtransparent_union = 0; int Wtypesign = 0; int Wundef = 0; int Wuninitialized = 1; +int Wunknown_attribute = 1; int Wvla = 1; int dbg_entry = 0; @@ -463,6 +464,7 @@ static const struct warning { { "typesign", &Wtypesign }, { "undef", &Wundef }, { "uninitialized", &Wuninitialized }, + { "unknown-attribute", &Wunknown_attribute }, { "vla", &Wvla }, }; diff --git a/lib.h b/lib.h index 15b69fa2..b778bdcd 100644 --- a/lib.h +++ b/lib.h @@ -126,6 +126,7 @@ extern int Wtransparent_union; extern int Wtypesign; extern int Wundef; extern int Wuninitialized; +extern int Wunknown_attribute; extern int Wvla; extern int dbg_entry; diff --git a/parse.c b/parse.c index d1aa83b4..212fae3a 100644 --- a/parse.c +++ b/parse.c @@ -1230,7 +1230,8 @@ static struct token *recover_unknown_attribute(struct token *token) { struct expression *expr = NULL; - warning(token->pos, "attribute '%s': unknown attribute", show_ident(token->ident)); + if (Wunknown_attribute) + warning(token->pos, "attribute '%s': unknown attribute", show_ident(token->ident)); token = token->next; if (match_op(token, '(')) token = parens_expression(token, &expr, "in attribute"); diff --git a/validation/Wunknown-attribute-def.c b/validation/Wunknown-attribute-def.c new file mode 100644 index 00000000..0c0868d6 --- /dev/null +++ b/validation/Wunknown-attribute-def.c @@ -0,0 +1,9 @@ +static int foo(void) __attribute__((unknown_attribute)); + +/* + * check-name: warn-unknown-attribute + * + * check-error-start +Wunknown-attribute-def.c:1:37: warning: attribute 'unknown_attribute': unknown attribute + * check-error-end + */ diff --git a/validation/Wunknown-attribute-no.c b/validation/Wunknown-attribute-no.c new file mode 100644 index 00000000..87951699 --- /dev/null +++ b/validation/Wunknown-attribute-no.c @@ -0,0 +1,9 @@ +static int foo(void) __attribute__((unknown_attribute)); + +/* + * check-name: warn-unknown-attribute-no + * check-command: sparse -Wno-unknown-attribute $file + * + * check-error-start + * check-error-end + */ diff --git a/validation/Wunknown-attribute-yes.c b/validation/Wunknown-attribute-yes.c new file mode 100644 index 00000000..72538cf5 --- /dev/null +++ b/validation/Wunknown-attribute-yes.c @@ -0,0 +1,10 @@ +static int foo(void) __attribute__((unknown_attribute)); + +/* + * check-name: warn-unknown-attribute-yes + * check-command: sparse -Wunknown-attribute $file + * + * check-error-start +Wunknown-attribute-yes.c:1:37: warning: attribute 'unknown_attribute': unknown attribute + * check-error-end + */ -- 2.10.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 3/3] By default disable the new warning flag '-Wunknown-attribute' 2016-11-02 23:07 [PATCH v2 0/3] reduce noise from unknown attributes Luc Van Oostenryck 2016-11-02 23:07 ` [PATCH v2 1/3] Warn on unknown attributes instead of throwing errors Luc Van Oostenryck 2016-11-02 23:07 ` [PATCH v2 2/3] Add a new warning flag: '-Wunknown-attribute' Luc Van Oostenryck @ 2016-11-02 23:07 ` Luc Van Oostenryck 2016-11-17 17:06 ` [PATCH v2 0/3] reduce noise from unknown attributes Christopher Li 3 siblings, 0 replies; 6+ messages in thread From: Luc Van Oostenryck @ 2016-11-02 23:07 UTC (permalink / raw) To: linux-sparse; +Cc: Christopher Li, Luc Van Oostenryck Generally, we won't be interested by those warnings, but we can always explicitly ask for them if needed. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> --- lib.c | 2 +- validation/Wunknown-attribute-def.c | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/lib.c b/lib.c index 138736e7..b4b09a78 100644 --- a/lib.c +++ b/lib.c @@ -240,7 +240,7 @@ int Wtransparent_union = 0; int Wtypesign = 0; int Wundef = 0; int Wuninitialized = 1; -int Wunknown_attribute = 1; +int Wunknown_attribute = 0; int Wvla = 1; int dbg_entry = 0; diff --git a/validation/Wunknown-attribute-def.c b/validation/Wunknown-attribute-def.c index 0c0868d6..defe643d 100644 --- a/validation/Wunknown-attribute-def.c +++ b/validation/Wunknown-attribute-def.c @@ -4,6 +4,5 @@ static int foo(void) __attribute__((unknown_attribute)); * check-name: warn-unknown-attribute * * check-error-start -Wunknown-attribute-def.c:1:37: warning: attribute 'unknown_attribute': unknown attribute * check-error-end */ -- 2.10.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 0/3] reduce noise from unknown attributes 2016-11-02 23:07 [PATCH v2 0/3] reduce noise from unknown attributes Luc Van Oostenryck ` (2 preceding siblings ...) 2016-11-02 23:07 ` [PATCH v2 3/3] By default disable the new warning flag '-Wunknown-attribute' Luc Van Oostenryck @ 2016-11-17 17:06 ` Christopher Li 2016-11-17 17:34 ` Luc Van Oostenryck 3 siblings, 1 reply; 6+ messages in thread From: Christopher Li @ 2016-11-17 17:06 UTC (permalink / raw) To: Luc Van Oostenryck; +Cc: Linux-Sparse On Thu, Nov 3, 2016 at 7:07 AM, Luc Van Oostenryck <luc.vanoostenryck@gmail.com> wrote: > Change from v1: > - compile fix for a patch splitting leftover > - each patch depends on the previous one I fix the patch split in V1. Doe you have other change between the v1 and v2? Chris ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 0/3] reduce noise from unknown attributes 2016-11-17 17:06 ` [PATCH v2 0/3] reduce noise from unknown attributes Christopher Li @ 2016-11-17 17:34 ` Luc Van Oostenryck 0 siblings, 0 replies; 6+ messages in thread From: Luc Van Oostenryck @ 2016-11-17 17:34 UTC (permalink / raw) To: Christopher Li; +Cc: Linux-Sparse On Fri, Nov 18, 2016 at 01:06:28AM +0800, Christopher Li wrote: > On Thu, Nov 3, 2016 at 7:07 AM, Luc Van Oostenryck > <luc.vanoostenryck@gmail.com> wrote: > > Change from v1: > > - compile fix for a patch splitting leftover > > - each patch depends on the previous one > > I fix the patch split in V1. Doe you have other change > between the v1 and v2? No. The issue with V1 was in fact only a last minute patch reordering. Luc ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-11-17 17:34 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-11-02 23:07 [PATCH v2 0/3] reduce noise from unknown attributes Luc Van Oostenryck 2016-11-02 23:07 ` [PATCH v2 1/3] Warn on unknown attributes instead of throwing errors Luc Van Oostenryck 2016-11-02 23:07 ` [PATCH v2 2/3] Add a new warning flag: '-Wunknown-attribute' Luc Van Oostenryck 2016-11-02 23:07 ` [PATCH v2 3/3] By default disable the new warning flag '-Wunknown-attribute' Luc Van Oostenryck 2016-11-17 17:06 ` [PATCH v2 0/3] reduce noise from unknown attributes Christopher Li 2016-11-17 17:34 ` Luc Van Oostenryck
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).