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 <oleg@xxxxxxxxxx> > > --- 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html