* 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
* 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
* [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 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.