|
|
|
Re: variable size array declarations | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] | |
On Mon, Oct 31, 2011 at 05:08:29PM +0300, Dan Carpenter wrote:
> I am trying to check something in Smatch with variable size arrays
> and I'm running into problems. Here is the function I'm trying to
> parse.
>
> void func(int x)
> {
> char buf[x];
> }
>
> Array symbols have an ->array_size. It gets set correctly in parse.c
> to expression of type EXPR_SYMBOL. But by the time I parse it in
> Smatch the ->array_size is now an EXPR_PREOP (a dereference). In
> fact all the variables seem to get change to dereferences of the
> variables.
>
I tracked this down. In smatch, how I use sparse is that I call
sparse_keep_tokens() and then I parse the resulting symbol list
myself.
In examine_array_type() we call get_expression_value() which changes
the symbols from normal symbols to dereferences. The call tree is:
examine_array_type()
-> get_expression_value()
-> __get_expression_value()
-> evaluate_expression()
-> evaluate_symbol_expression() <- change happens here.
The problem for me is that not all expressions have been evualated
like this so it's not consistent.
regards,
dan carpenter
Attachment:
signature.asc
Description: Digital signature
[Newbies FAQ] [Kernel List] [Site Home] [IETF Annouce] [DCCP] [Netdev] [Networking] [Security] [Bugtraq] [Photo] [Yosemite] [MIPS Linux] [ARM Linux] [Linux Security] [Linux RAID] [Linux SCSI] [DDR & Rambus] [Trinity Fuzzer Tool]