]> sourceware.org Git - libabigail.git/commit
Bug 26646 - unexpected declaration-only types
authorDodji Seketeli <dodji@redhat.com>
Mon, 7 Feb 2022 10:21:08 +0000 (11:21 +0100)
committerDodji Seketeli <dodji@redhat.com>
Tue, 8 Feb 2022 10:11:51 +0000 (11:11 +0100)
commitf86ff3f7a72c0c0d5d48e6f83d4cfcc25e2f57e2
treef3082b2f850ddd60457803081872f0c81c6b48de
parent07f494aa460f86622a8796e072aff9ec4c6e39fb
Bug 26646 - unexpected declaration-only types

In a version of the kernel binary referred to in this problem report,
the parameter 'skb' of the udp4_hwcsum function, which is of type
"pointer to struct sk_buff", indirectly refers to a pointer to a
declaration-only struct ip_mc_list.

In another version of that kernel binary, the same parameter skb of
the udp4_hwcsum function is still of type "pointer to struct sk_buff",
but in that case, the sk_buff indirectly refers to a pointer to a
fully defined struct ip_mc_list.

The first kernel only contains a decl-only struct ip_mc_list whereas
the second one contains a fully defined struct ip_mc_list.

This problem comes from the fact that in add_or_update_class_type, we
"reuse" the "struct sk_buff" that we've already seen in the same
binary, if any.  Depending on the order in which types are defined in
the debug information, if the DIE for struct sk_buff that refers to a
decl-only struct ip_mc_list has already been "seen" by the
DWARF-reader, then add_or_update_class_type re-uses the IR of that DIE
that's been constructed already; otherwise, the IR for the struct
sk_buff represented by the current DIE is constructed.

This patch fixes the problem by always constructing an IR for the
DIE that is being seen, in add_or_update_class_type.

* src/abg-dwarf-reader.cc (add_or_update_class_type): Do not reuse
the IR for a DIE with the same textual representation as the one
we are seeing now.
* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
src/abg-dwarf-reader.cc
tests/data/test-annotate/test21-pr19092.so.abi
tests/data/test-read-dwarf/test21-pr19092.so.abi
This page took 0.033665 seconds and 5 git commands to generate.