* Fun with Linux 2.6.21-rc1
@ 2007-02-23 17:25 Pavel Roskin
2007-02-23 19:59 ` Pavel Roskin
0 siblings, 1 reply; 6+ messages in thread
From: Pavel Roskin @ 2007-02-23 17:25 UTC (permalink / raw)
To: linux-sparse
Hello!
The current sparse reports many errors with Linux 2.6.21-rc1. There are
screenfuls of errors for every file. I have reduced one of them to this
simple file:
struct st {
char c;
} __attribute__ ((aligned(2)));
struct st s1;
struct st s2;
$ sparse test.c
test.c:5:18: error: Expected ( after asm
test.c:5:18: error: got s2
test.c:5:20: error: Expected ) after asm
test.c:5:20: error: got ;
builtin:0:0: error: expected declaration
The strange thing is that there is no "asm" here at all.
--
Regards,
Pavel Roskin
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Fun with Linux 2.6.21-rc1
2007-02-23 17:25 Fun with Linux 2.6.21-rc1 Pavel Roskin
@ 2007-02-23 19:59 ` Pavel Roskin
2007-02-23 22:30 ` [PATCH] " Christopher Li
0 siblings, 1 reply; 6+ messages in thread
From: Pavel Roskin @ 2007-02-23 19:59 UTC (permalink / raw)
To: linux-sparse, Christopher Li
On Fri, 2007-02-23 at 12:25 -0500, Pavel Roskin wrote:
> Hello!
>
> The current sparse reports many errors with Linux 2.6.21-rc1. There are
> screenfuls of errors for every file. I have reduced one of them to this
> simple file:
>
> struct st {
> char c;
> } __attribute__ ((aligned(2)));
> struct st s1;
> struct st s2;
P.S. The breakage has nothing to do to Linux changes. It was caused by
the patch called "Make the ptrlist using the sparse allocator". Undoing
the patch fixes the problem.
--
Regards,
Pavel Roskin
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] Re: Fun with Linux 2.6.21-rc1
2007-02-23 19:59 ` Pavel Roskin
@ 2007-02-23 22:30 ` Christopher Li
2007-02-24 1:53 ` Pavel Roskin
2007-02-25 22:45 ` exposing __attribute__ portability macros in lib.h; any objections? Josh Triplett
0 siblings, 2 replies; 6+ messages in thread
From: Christopher Li @ 2007-02-23 22:30 UTC (permalink / raw)
To: Pavel Roskin; +Cc: linux-sparse, Josh Triplett
On Fri, Feb 23, 2007 at 02:59:26PM -0500, Pavel Roskin wrote:
> P.S. The breakage has nothing to do to Linux changes. It was caused by
> the patch called "Make the ptrlist using the sparse allocator". Undoing
> the patch fixes the problem.
>
No, that was not it. The bug does not trigger if I remove "-O" or remove
the recent struct attribute patch.
You make me guilt for 5 mins. But the real bugs is match_idents did not
end with NULL.
This patch should fix it:
Chris
Fix a bug that match_idents forget to end with NULL
Pavel Roskin manage to hit this bug with
struct st {
char c;
} __attribute__ ((aligned(2)));
struct st s1;
struct st s2;
Signed-Off-By: Christopher Li <sparse@chrisli.org>
Index: sparse/parse.c
===================================================================
--- sparse.orig/parse.c 2007-02-23 14:33:28.000000000 -0800
+++ sparse/parse.c 2007-02-23 14:36:16.000000000 -0800
@@ -861,7 +861,7 @@ static struct token *handle_attributes(s
apply_ctype(token->pos, &thistype, ctype);
continue;
}
- if (match_idents(token, &asm_ident, &__asm_ident, &__asm___ident)) {
+ if (match_idents(token, &asm_ident, &__asm_ident, &__asm___ident, NULL)) {
struct expression *expr;
token = expect(token->next, '(', "after asm");
token = parse_expression(token->next, &expr);
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Re: Fun with Linux 2.6.21-rc1
2007-02-23 22:30 ` [PATCH] " Christopher Li
@ 2007-02-24 1:53 ` Pavel Roskin
2007-02-25 22:45 ` exposing __attribute__ portability macros in lib.h; any objections? Josh Triplett
1 sibling, 0 replies; 6+ messages in thread
From: Pavel Roskin @ 2007-02-24 1:53 UTC (permalink / raw)
To: Christopher Li; +Cc: linux-sparse
On Fri, 2007-02-23 at 14:30 -0800, Christopher Li wrote:
> On Fri, Feb 23, 2007 at 02:59:26PM -0500, Pavel Roskin wrote:
> > P.S. The breakage has nothing to do to Linux changes. It was caused by
> > the patch called "Make the ptrlist using the sparse allocator". Undoing
> > the patch fixes the problem.
> >
>
> No, that was not it. The bug does not trigger if I remove "-O" or remove
> the recent struct attribute patch.
>
> You make me guilt for 5 mins. But the real bugs is match_idents did not
> end with NULL.
I understand your patch triggered a bug that was sitting there for more
than two years. That's quite rare. Sorry for assuming your guilt.
> This patch should fix it:
Yes, it's working. Thank you!
--
Regards,
Pavel Roskin
^ permalink raw reply [flat|nested] 6+ messages in thread
* exposing __attribute__ portability macros in lib.h; any objections?
2007-02-23 22:30 ` [PATCH] " Christopher Li
2007-02-24 1:53 ` Pavel Roskin
@ 2007-02-25 22:45 ` Josh Triplett
2007-02-26 10:43 ` Christopher Li
1 sibling, 1 reply; 6+ messages in thread
From: Josh Triplett @ 2007-02-25 22:45 UTC (permalink / raw)
To: Christopher Li; +Cc: Pavel Roskin, linux-sparse
[-- Attachment #1: Type: text/plain, Size: 931 bytes --]
Christopher Li wrote:
> Fix a bug that match_idents forget to end with NULL
[...]
> Signed-Off-By: Christopher Li <sparse@chrisli.org>
[...]
> - if (match_idents(token, &asm_ident, &__asm_ident, &__asm___ident)) {
> + if (match_idents(token, &asm_ident, &__asm_ident, &__asm___ident, NULL)) {
Applied.
I'd also like to apply a patch to use __attribute__((__sentinel__)) on
match_idents, which would have caught this problem. In order to do so
portably, I plan to add a portability macro SENTINEL_ATTR, like the
FORMAT_ATTR macro currently in lib.h. However, lib.h currently defines
FORMAT_ATTR, uses it for a few prototypes, and then undefines it. Any
objections to defining SENTINEL_ATTR and leaving it defined (and probably
doing the same for FORMAT_ATTR)? I don't think those would pollute the
namespace any more than lib.h already does with position, verbose, info, and
similar.
- Josh Triplett
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 252 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: exposing __attribute__ portability macros in lib.h; any objections?
2007-02-25 22:45 ` exposing __attribute__ portability macros in lib.h; any objections? Josh Triplett
@ 2007-02-26 10:43 ` Christopher Li
0 siblings, 0 replies; 6+ messages in thread
From: Christopher Li @ 2007-02-26 10:43 UTC (permalink / raw)
To: Josh Triplett; +Cc: Pavel Roskin, linux-sparse
On Sun, Feb 25, 2007 at 02:45:29PM -0800, Josh Triplett wrote:
> Applied.
Thanks!
>
> I'd also like to apply a patch to use __attribute__((__sentinel__)) on
> match_idents, which would have caught this problem. In order to do so
> portably, I plan to add a portability macro SENTINEL_ATTR, like the
> FORMAT_ATTR macro currently in lib.h. However, lib.h currently defines
> FORMAT_ATTR, uses it for a few prototypes, and then undefines it. Any
> objections to defining SENTINEL_ATTR and leaving it defined (and probably
> doing the same for FORMAT_ATTR)? I don't think those would pollute the
> namespace any more than lib.h already does with position, verbose, info, and
> similar.
No objection for __sentinel__ per se. In the long run, I would like to
get ride of match_idents completely. I want to define more parser
operation function for pre-defined keywords. So it is driven by the
symbol table rather than comparing the keyword one by one. It is a
big change though.
Chris
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2007-02-26 11:16 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-02-23 17:25 Fun with Linux 2.6.21-rc1 Pavel Roskin
2007-02-23 19:59 ` Pavel Roskin
2007-02-23 22:30 ` [PATCH] " Christopher Li
2007-02-24 1:53 ` Pavel Roskin
2007-02-25 22:45 ` exposing __attribute__ portability macros in lib.h; any objections? Josh Triplett
2007-02-26 10:43 ` Christopher 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.