RE: attributes are not stored at right location for array variables

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Yes, there are attributes that can be applied to types so I do not want to change that.

The problem I am seeing is only with array variables and if you see the function direct_delcalartor, when it starts processing array
variables, the ctye gets reassigned with the type of the variables instead of the ctype of the variable itself and in the next
iteration the attribute will be applied to the ctype of the type of the variable.

May be a patch specific to array variable will solve the problem.

Thanks,

-Mitesh



> -----Original Message-----
> From: Chris Li [mailto:christ.li@xxxxxxxxx]
> Sent: Wednesday, January 31, 2007 11:54 AM
> To: Mitesh Shah
> Cc: Linux-Sparse
> Subject: Re: attributes are not stored at right location for array
> variables
>
>
> Your patch assumes every attribute apply to node instead of type.
> Is there any attribute need to apply to type instead?
>
> For your change, apply_modifiers() need to change where it take the
> __mode__ attribute as well.
>
> Chris
>
>
> On 1/31/07, Mitesh Shah <mshah@xxxxxxxx> wrote:
> >
> > It seems that the attributes are not stored with the variable ctype when the variable is an array. For declaration such as,
> >
> > char c[100] __attribute__((aligned(64)));
> >
> > The attribute is stored with the array ctype instead of the variable C ctype.
> >
> > In function direct_declarator in parse.c at line 920 the ctype gets replaced with the array ctype and in the next
> iteration it is
> > passed to handle_attributes. handle_attributes should be passed the original ctype so here is the patch.
> >
> > Thanks,
> >
> > -Mitesh
> >
> > -------------------------------------------------------
> >
> > index 5077ee6..306b144 100644
> > --- a/parse.c
> > +++ b/parse.c
> > @@ -881,7 +881,7 @@ static struct token *direct_declarator(struct token *token, struct symbol *decl,
> >         }
> >
> >         for (;;) {
> > -               token = handle_attributes(token, ctype);
> > +               token = handle_attributes(token, &decl->ctype);
> >
> >                 if (token_type(token) != TOKEN_SPECIAL)
> >                         return token;
> >
> >
> > -
> > To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
> > the body of a message to majordomo@xxxxxxxxxxxxxxx
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >
>


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

[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux