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