From c6adc489224b4c1c5929ac83b8a904f1733a7ba4 Mon Sep 17 00:00:00 2001 From: Oleg Nesterov Date: Tue, 4 Feb 2020 17:51:42 +0100 Subject: dissect: change deanon() to handle the !node case Change deanon() to always initialize base->ident when parent != NULL but still return false to avoid the pointless ->r_symdef(). Test-case: struct { union { int x; }; } var = { { .x = 0 }, }; before this patch: 1:8 s def :var 5:3 g def var struct :var 5:3 g -w- var struct :var 6:12 s -w- ?.x int after: 1:8 s def :var 5:3 g def var struct :var 5:3 g -w- var struct :var 6:12 s -w- :var.x int Signed-off-by: Oleg Nesterov Signed-off-by: Luc Van Oostenryck --- dissect.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dissect.c b/dissect.c index d34b38af..57dcdb29 100644 --- a/dissect.c +++ b/dissect.c @@ -195,8 +195,10 @@ static bool deanon(struct symbol *base, struct ident *node, struct symbol *paren struct ident *pi = parent ? parent->ident : NULL; char name[256]; - if (!node) + if (!node) { + base->ident = pi; return false; + } snprintf(name, sizeof(name), "%.*s:%.*s", pi ? pi->len : 0, pi ? pi->name : NULL, node->len, node->name); -- cgit 1.2.3-korg