All of lore.kernel.org
 help / color / mirror / Atom feed
* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.