]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
libctf: fix cv-qualified unnamed struct/union field lookup
authorNick Alcock <nick.alcock@oracle.com>
Mon, 24 Feb 2025 18:11:25 +0000 (18:11 +0000)
committerNick Alcock <nick.alcock@oracle.com>
Fri, 28 Feb 2025 14:16:42 +0000 (14:16 +0000)
commitfa4fe2753730f412c00a8a2bab36550c063dfe95
treecb5dd0b34e23d0cb57668b61fcdd208898c3cb11
parent83e8a5d39be92d052986fe9d687a049db8f9f8c5
libctf: fix cv-qualified unnamed struct/union field lookup

GCC permits not only unnamed structs and unions, but cv-qualified ones.
Our earlier fix in 6c3a38777b38a2ad87e2b2bcec4567578d1c83ec supported
unnamed structs and unions, but only unqualified ones.

Resolving away cvr-quals of nameless fields (and, irrelevantly, typedefs)
is easy and fixes this problem.

Tests adjusted accordingly.

libctf/
PR libctf/32746
* ctf-types.c (ctf_member_next): Resolve away cv-quals.
(ctf_member_info): Likewise.
* testsuite/libctf-lookup/struct-iteration-ctf.c: Add a cv-qualified
type or two: make sure to keep a non-qualified one.
* testsuite/libctf-lookup/struct-iteration.c: Verify consistency
of ctf_member_next and ctf_member_info.
* testsuite/libctf-lookup/struct-iteration.lk: Adjust.

Tested-by: Stephen Brennan <stephen.s.brennan@oracle.com>
libctf/ctf-types.c
libctf/testsuite/libctf-lookup/struct-iteration-ctf.c
libctf/testsuite/libctf-lookup/struct-iteration.c
libctf/testsuite/libctf-lookup/struct-iteration.lk