All of lore.kernel.org
 help / color / mirror / Atom feed
* Warning message when using sparse
@ 2010-07-09  1:52 Larry Finger
  2010-07-09 20:47 ` Jiri Slaby
  0 siblings, 1 reply; 15+ messages in thread
From: Larry Finger @ 2010-07-09  1:52 UTC (permalink / raw)
  To: LKML

On recent kernels, sparse reports the following message for every source 
file that is processed. The warning does not seem to affect the results. 
I'm not sure when the problem started, but I think it was with 2.6.35-rc1.


   CHECK   drivers/staging/rtl8712/rtl871x_rf.c
/home/finger/linux-2.6/arch/x86/include/asm/cpufeature.h:297:21: error: 
Expected ( after asm
/home/finger/linux-2.6/arch/x86/include/asm/cpufeature.h:297:21: error: 
got goto


Larry

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Warning message when using sparse
  2010-07-09  1:52 Warning message when using sparse Larry Finger
@ 2010-07-09 20:47 ` Jiri Slaby
  2010-07-09 21:22   ` Larry Finger
  0 siblings, 1 reply; 15+ messages in thread
From: Jiri Slaby @ 2010-07-09 20:47 UTC (permalink / raw)
  To: Larry Finger; +Cc: LKML, Christopher Li, Linux-Sparse

On 07/09/2010 03:52 AM, Larry Finger wrote:
> On recent kernels, sparse reports the following message for every source
> file that is processed. The warning does not seem to affect the results.
> I'm not sure when the problem started, but I think it was with 2.6.35-rc1.
> 
> 
>   CHECK   drivers/staging/rtl8712/rtl871x_rf.c
> /home/finger/linux-2.6/arch/x86/include/asm/cpufeature.h:297:21: error:
> Expected ( after asm
> /home/finger/linux-2.6/arch/x86/include/asm/cpufeature.h:297:21: error:
> got goto
> 

Yeah, I posted a support for that already:
http://git.kernel.org/?p=devel/sparse/chrisl/sparse.git;a=summary

The patch is not 100% correct, it doesn't support asm volatile goto and
similar.

What distro you use? I will fix it in opensuse (which provide gcc 4.5
already), if there will be no new release of sparse.

regards,
-- 
js

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Warning message when using sparse
  2010-07-09 20:47 ` Jiri Slaby
@ 2010-07-09 21:22   ` Larry Finger
  2010-07-09 21:26     ` Jiri Slaby
  0 siblings, 1 reply; 15+ messages in thread
From: Larry Finger @ 2010-07-09 21:22 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: LKML, Christopher Li, Linux-Sparse

Obviously, I pulled the wrong git tree. I got the one from the wiki. When 
I built the one from the kernel.org tree, all is well.

Larry


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Warning message when using sparse
  2010-07-09 21:22   ` Larry Finger
@ 2010-07-09 21:26     ` Jiri Slaby
  2010-07-09 22:04       ` Christopher Li
  0 siblings, 1 reply; 15+ messages in thread
From: Jiri Slaby @ 2010-07-09 21:26 UTC (permalink / raw)
  To: Larry Finger; +Cc: LKML, Christopher Li, Linux-Sparse

On 07/09/2010 11:22 PM, Larry Finger wrote:
> Obviously, I pulled the wrong git tree. I got the one from the wiki.
> When I built the one from the kernel.org tree, all is well.

Both are from kernel.org. But the one I sent is a Chris'es "fork" with
my and other fixes.

-- 
js

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Warning message when using sparse
  2010-07-09 21:26     ` Jiri Slaby
@ 2010-07-09 22:04       ` Christopher Li
  2010-07-10  8:39         ` [PATCH 1/2] parser: fix and simplify support of asm goto Jiri Slaby
  2010-07-10  8:39         ` [PATCH 2/2] parser: define __builtin_unreachable Jiri Slaby
  0 siblings, 2 replies; 15+ messages in thread
From: Christopher Li @ 2010-07-09 22:04 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: Larry Finger, LKML, Linux-Sparse

On Fri, Jul 9, 2010 at 2:26 PM, Jiri Slaby <jirislaby@gmail.com> wrote:
> On 07/09/2010 11:22 PM, Larry Finger wrote:
>> Obviously, I pulled the wrong git tree. I got the one from the wiki.
>> When I built the one from the kernel.org tree, all is well.
>
> Both are from kernel.org. But the one I sent is a Chris'es "fork" with
> my and other fixes.
>

Yes, you caught me slacking off. It is time to cut a new release
and flush all the bits into the official tree.

Chris

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 1/2] parser: fix and simplify support of asm goto
  2010-07-09 22:04       ` Christopher Li
@ 2010-07-10  8:39         ` Jiri Slaby
  2010-07-10 18:36             ` Chris Li
  2010-07-10  8:39         ` [PATCH 2/2] parser: define __builtin_unreachable Jiri Slaby
  1 sibling, 1 reply; 15+ messages in thread
From: Jiri Slaby @ 2010-07-10  8:39 UTC (permalink / raw)
  To: christ.li; +Cc: jirislaby, Larry Finger, linux-kernel, linux-sparse, Jiri Slaby

Christopher Li wrote:
> Yes, you caught me slacking off. It is time to cut a new release
> and flush all the bits into the official tree.

But include the patch below first, please. And maybe the second
one...

---

1) We now handle only "asm (volatile|goto)?", whereas
   "asm volatile? goto?" is correct.
2) We need to match only goto_ident, so do it explicitly against
   token->ident without match_idents.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 parse.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/parse.c b/parse.c
index caf10b9..dd7b1a4 100644
--- a/parse.c
+++ b/parse.c
@@ -1915,7 +1915,8 @@ static struct token *parse_asm_statement(struct token *token, struct statement *
 	stmt->type = STMT_ASM;
 	if (match_idents(token, &__volatile___ident, &__volatile_ident, &volatile_ident, NULL)) {
 		token = token->next;
-	} else if (match_idents(token, &goto_ident, NULL)) {
+	}
+	if (token->ident == &goto_ident) {
 		is_goto = 1;
 		token = token->next;
 	}
-- 
1.7.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 2/2] parser: define __builtin_unreachable
  2010-07-09 22:04       ` Christopher Li
  2010-07-10  8:39         ` [PATCH 1/2] parser: fix and simplify support of asm goto Jiri Slaby
@ 2010-07-10  8:39         ` Jiri Slaby
  2010-07-10  9:07           ` Josh Triplett
  1 sibling, 1 reply; 15+ messages in thread
From: Jiri Slaby @ 2010-07-10  8:39 UTC (permalink / raw)
  To: christ.li; +Cc: jirislaby, Larry Finger, linux-kernel, linux-sparse, Jiri Slaby

Gcc 4.5 defines
extern void __builtin_unreachable(void);
so, add it also to sparse.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 lib.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/lib.c b/lib.c
index a218bfc..ae6a20c 100644
--- a/lib.c
+++ b/lib.c
@@ -740,6 +740,7 @@ void declare_builtin_functions(void)
 	add_pre_buffer ("extern char * __builtin___strncpy_chk(char *, const char *, __SIZE_TYPE__, __SIZE_TYPE__);\n");
 	add_pre_buffer ("extern int __builtin___vsprintf_chk(char *, int, __SIZE_TYPE__, const char *, __builtin_va_list);\n");
 	add_pre_buffer ("extern int __builtin___vsnprintf_chk(char *, __SIZE_TYPE__, int, __SIZE_TYPE__, const char *, __builtin_va_list ap);\n");
+	add_pre_buffer ("extern void __builtin_unreachable(void);\n");
 }
 
 void create_builtin_stream(void)
-- 
1.7.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/2] parser: define __builtin_unreachable
  2010-07-10  8:39         ` [PATCH 2/2] parser: define __builtin_unreachable Jiri Slaby
@ 2010-07-10  9:07           ` Josh Triplett
  2010-07-13  7:52               ` Chris Li
  0 siblings, 1 reply; 15+ messages in thread
From: Josh Triplett @ 2010-07-10  9:07 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: christ.li, jirislaby, Larry Finger, linux-kernel, linux-sparse

On Sat, Jul 10, 2010 at 10:39:22AM +0200, Jiri Slaby wrote:
> Gcc 4.5 defines
> extern void __builtin_unreachable(void);
> so, add it also to sparse.
> 
> Signed-off-by: Jiri Slaby <jslaby@suse.cz>
> ---
>  lib.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/lib.c b/lib.c
> index a218bfc..ae6a20c 100644
> --- a/lib.c
> +++ b/lib.c
> @@ -740,6 +740,7 @@ void declare_builtin_functions(void)
>  	add_pre_buffer ("extern char * __builtin___strncpy_chk(char *, const char *, __SIZE_TYPE__, __SIZE_TYPE__);\n");
>  	add_pre_buffer ("extern int __builtin___vsprintf_chk(char *, int, __SIZE_TYPE__, const char *, __builtin_va_list);\n");
>  	add_pre_buffer ("extern int __builtin___vsnprintf_chk(char *, __SIZE_TYPE__, int, __SIZE_TYPE__, const char *, __builtin_va_list ap);\n");
> +	add_pre_buffer ("extern void __builtin_unreachable(void);\n");

__builtin_unreachable has special semantics beyond just a function.
This definition will suffice to allow compilation, but
__builtin_unreachable should have the same effect in sparse that it does
in GCC: mark the point (and the remainder of the basic block) as
unreachable.  Something like the mechanism used for handling noreturn
would work here as well; declaring the function to have attribute
noreturn would probably have almost the right semantics.

- Josh Triplett

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/2] parser: fix and simplify support of asm goto
  2010-07-10  8:39         ` [PATCH 1/2] parser: fix and simplify support of asm goto Jiri Slaby
@ 2010-07-10 18:36             ` Chris Li
  0 siblings, 0 replies; 15+ messages in thread
From: Chris Li @ 2010-07-10 18:36 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: jirislaby, Larry Finger, linux-kernel, linux-sparse

On Sat, Jul 10, 2010 at 1:39 AM, Jiri Slaby <jslaby@suse.cz> wrote:
> +       if (token->ident == &goto_ident) {

You need to test the token type is TOKEN_IDENT before using token->ident.
I will apply your patch with the fix up.

Chris

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/2] parser: fix and simplify support of asm goto
@ 2010-07-10 18:36             ` Chris Li
  0 siblings, 0 replies; 15+ messages in thread
From: Chris Li @ 2010-07-10 18:36 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: jirislaby, Larry Finger, linux-kernel, linux-sparse

On Sat, Jul 10, 2010 at 1:39 AM, Jiri Slaby <jslaby@suse.cz> wrote:
> +       if (token->ident == &goto_ident) {

You need to test the token type is TOKEN_IDENT before using token->ident.
I will apply your patch with the fix up.

Chris
--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/2] parser: define __builtin_unreachable
  2010-07-10  9:07           ` Josh Triplett
@ 2010-07-13  7:52               ` Chris Li
  0 siblings, 0 replies; 15+ messages in thread
From: Chris Li @ 2010-07-13  7:52 UTC (permalink / raw)
  To: Josh Triplett
  Cc: Jiri Slaby, jirislaby, Larry Finger, linux-kernel, linux-sparse

On Sat, Jul 10, 2010 at 2:07 AM, Josh Triplett <josh@joshtriplett.org> wrote:
> __builtin_unreachable has special semantics beyond just a function.
> This definition will suffice to allow compilation, but
> __builtin_unreachable should have the same effect in sparse that it does
> in GCC: mark the point (and the remainder of the basic block) as
> unreachable.  Something like the mechanism used for handling noreturn
> would work here as well; declaring the function to have attribute
> noreturn would probably have almost the right semantics.
>

The attribute noreturn will apply to the whole function. The function
NEVER returns.
__builtin_unreachable only apply to current basic block. e.g. some
error handling path like panic. The function can still return a value on the
normal path. It has different meaning than attribute noreturn. So I don't think
automatically give the function noreturn attribute is the right thing to do.

I will apply the patch until we got better way to handle this.

Chris

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/2] parser: define __builtin_unreachable
@ 2010-07-13  7:52               ` Chris Li
  0 siblings, 0 replies; 15+ messages in thread
From: Chris Li @ 2010-07-13  7:52 UTC (permalink / raw)
  To: Josh Triplett
  Cc: Jiri Slaby, jirislaby, Larry Finger, linux-kernel, linux-sparse

On Sat, Jul 10, 2010 at 2:07 AM, Josh Triplett <josh@joshtriplett.org> wrote:
> __builtin_unreachable has special semantics beyond just a function.
> This definition will suffice to allow compilation, but
> __builtin_unreachable should have the same effect in sparse that it does
> in GCC: mark the point (and the remainder of the basic block) as
> unreachable.  Something like the mechanism used for handling noreturn
> would work here as well; declaring the function to have attribute
> noreturn would probably have almost the right semantics.
>

The attribute noreturn will apply to the whole function. The function
NEVER returns.
__builtin_unreachable only apply to current basic block. e.g. some
error handling path like panic. The function can still return a value on the
normal path. It has different meaning than attribute noreturn. So I don't think
automatically give the function noreturn attribute is the right thing to do.

I will apply the patch until we got better way to handle this.

Chris
--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/2] parser: define __builtin_unreachable
  2010-07-13  7:52               ` Chris Li
  (?)
@ 2010-07-13 18:12               ` Josh Triplett
  2010-07-13 18:49                   ` Chris Li
  -1 siblings, 1 reply; 15+ messages in thread
From: Josh Triplett @ 2010-07-13 18:12 UTC (permalink / raw)
  To: Chris Li; +Cc: Jiri Slaby, jirislaby, Larry Finger, linux-kernel, linux-sparse

On Tue, Jul 13, 2010 at 12:52:48AM -0700, Chris Li wrote:
> On Sat, Jul 10, 2010 at 2:07 AM, Josh Triplett <josh@joshtriplett.org> wrote:
> > __builtin_unreachable has special semantics beyond just a function.
> > This definition will suffice to allow compilation, but
> > __builtin_unreachable should have the same effect in sparse that it does
> > in GCC: mark the point (and the remainder of the basic block) as
> > unreachable.  Something like the mechanism used for handling noreturn
> > would work here as well; declaring the function to have attribute
> > noreturn would probably have almost the right semantics.
> >
> 
> The attribute noreturn will apply to the whole function. The function
> NEVER returns.
> __builtin_unreachable only apply to current basic block. e.g. some
> error handling path like panic. The function can still return a value on the
> normal path. It has different meaning than attribute noreturn. So I don't think
> automatically give the function noreturn attribute is the right thing to do.

No, I didn't mean that using __builtin_unreachable should mark the
function calling it as noreturn.  I meant that as an approximation to
the right behavior, __builtin_unreachable *itself* could have attribute
noreturn.

- Josh Triplett

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/2] parser: define __builtin_unreachable
  2010-07-13 18:12               ` Josh Triplett
@ 2010-07-13 18:49                   ` Chris Li
  0 siblings, 0 replies; 15+ messages in thread
From: Chris Li @ 2010-07-13 18:49 UTC (permalink / raw)
  To: Josh Triplett
  Cc: Jiri Slaby, jirislaby, Larry Finger, linux-kernel, linux-sparse

On Tue, Jul 13, 2010 at 11:12 AM, Josh Triplett <josh@joshtriplett.org> wrote:
> No, I didn't mean that using __builtin_unreachable should mark the
> function calling it as noreturn.  I meant that as an approximation to
> the right behavior, __builtin_unreachable *itself* could have attribute
> noreturn.

Ah, that make sense.

Chris

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/2] parser: define __builtin_unreachable
@ 2010-07-13 18:49                   ` Chris Li
  0 siblings, 0 replies; 15+ messages in thread
From: Chris Li @ 2010-07-13 18:49 UTC (permalink / raw)
  To: Josh Triplett
  Cc: Jiri Slaby, jirislaby, Larry Finger, linux-kernel, linux-sparse

On Tue, Jul 13, 2010 at 11:12 AM, Josh Triplett <josh@joshtriplett.org> wrote:
> No, I didn't mean that using __builtin_unreachable should mark the
> function calling it as noreturn.  I meant that as an approximation to
> the right behavior, __builtin_unreachable *itself* could have attribute
> noreturn.

Ah, that make sense.

Chris
--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2010-07-13 18:49 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-07-09  1:52 Warning message when using sparse Larry Finger
2010-07-09 20:47 ` Jiri Slaby
2010-07-09 21:22   ` Larry Finger
2010-07-09 21:26     ` Jiri Slaby
2010-07-09 22:04       ` Christopher Li
2010-07-10  8:39         ` [PATCH 1/2] parser: fix and simplify support of asm goto Jiri Slaby
2010-07-10 18:36           ` Chris Li
2010-07-10 18:36             ` Chris Li
2010-07-10  8:39         ` [PATCH 2/2] parser: define __builtin_unreachable Jiri Slaby
2010-07-10  9:07           ` Josh Triplett
2010-07-13  7:52             ` Chris Li
2010-07-13  7:52               ` Chris Li
2010-07-13 18:12               ` Josh Triplett
2010-07-13 18:49                 ` Chris Li
2010-07-13 18:49                   ` Chris Li

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.