dwarf_loader: DW_TAG_inlined_subroutine needs recoding by DW_AT_abstract_origin
Not just by DW_AT_type.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
diff --git a/dwarf_loader.c b/dwarf_loader.c
index 5a74035..7a6a9f8 100644
--- a/dwarf_loader.c
+++ b/dwarf_loader.c
@@ -2235,9 +2235,15 @@
lexblock__recode_dwarf_types(tag__lexblock(pos), cu);
continue;
case DW_TAG_inlined_subroutine:
- dtype = dwarf_cu__find_tag_by_ref(dcu, &dpos->type);
+ if (dpos->type.off != 0)
+ dtype = dwarf_cu__find_tag_by_ref(dcu, &dpos->type);
+ else
+ dtype = dwarf_cu__find_tag_by_ref(dcu, &dpos->abstract_origin);
if (dtype == NULL) {
- tag__print_type_not_found(pos);
+ if (dpos->type.off != 0)
+ tag__print_type_not_found(pos);
+ else
+ tag__print_abstract_origin_not_found(pos);
continue;
}
ftype__recode_dwarf_types(dtype->tag, cu);