I did not test it myself, but it looks seasonable to me.
BTW, did you look at the show-parse series of function?
It is a good example of how to traverse the symbol tree.
I would love to see dissect using similar structure.
Chris
On Fri, Dec 15, 2006 at 12:35:47AM +0300, Oleg Nesterov wrote:
> dissect can't parse initializers like
>
> struct T { int i; } a[2][3] = { [0][0] = {123} };
>
> , output is:
>
> 1:8 s def T
> 1:21 g def a struct T [3][2]
> 1:21 g -w- a struct T [3][2]
> T.c:1:37: warning: bad expr->type: 25
>
> with this patch applied:
>
> 1:8 s def T
> 1:21 g def a struct T [3][2]
> 1:21 g -w- a struct T [3][2]
> 1:43 s -w- T.i int
>
> Signed-off-by: Oleg Nesterov <[EMAIL PROTECTED]>
>
> --- DS/dissect.c~ 2006-04-20 03:03:33.000000000 +0400
> +++ DS/dissect.c 2006-04-20 03:03:42.000000000 +0400
> @@ -507,10 +507,13 @@ static struct symbol *do_initializer(str
> default:
> do_expression(u_lval(type), expr);
>
> + break; case EXPR_INDEX:
> + do_initializer(base_type(type), expr->idx_expression);
> +
> break; case EXPR_INITIALIZER:
> m_addr = 0;
> FOR_EACH_PTR(expr->expr_list, m_expr)
> - if(type->type == SYM_ARRAY) {
> + if (type->type == SYM_ARRAY) {
> m_type = base_type(type);
> if (m_expr->type == EXPR_INDEX)
> m_expr = m_expr->idx_expression;
-
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html