]> git.ipfire.org Git - thirdparty/gcc.git/commit
btf: do not skip members of data type with type id BTF_VOID_TYPEID
authorIndu Bhagat <indu.bhagat@oracle.com>
Mon, 8 Apr 2024 18:01:45 +0000 (11:01 -0700)
committerIndu Bhagat <indu.bhagat@oracle.com>
Thu, 11 Apr 2024 00:31:45 +0000 (17:31 -0700)
commit936dd627cd90bdfa3f796712c043406958131d7c
tree1b2952b6e0a1788061da22e7d944b88af1da7fb2
parent5c869aa8a4538b218d9e59de6c96133971e7b965
btf: do not skip members of data type with type id BTF_VOID_TYPEID

The previous fix in gen_ctf_sou_type () exposes an issue in BTF
generation, however: BTF emission was currently decrementing the vlen
(indicating the number of members) to skip members of type CTF_K_UNKNOWN
altogether, but still emitting the BTF for the corresponding member (in
output_asm_btf_sou_fields ()).

One can see malformed BTF by executing the newly added CTF testcase
(gcc.dg/debug/ctf/ctf-bitfields-5.c) with -gbtf instead or even existing
btf-struct-2.c without this patch.

To fix the issue, it makes sense to rather _not_ skip members of data
type of type id BTF_VOID_TYPEID.

gcc/ChangeLog:
* btfout.cc (btf_asm_type): Do not skip emitting members of
unknown type.

gcc/testsuite/ChangeLog:
* gcc.dg/debug/btf/btf-bitfields-4.c: Update the vlen check.
* gcc.dg/debug/btf/btf-struct-2.c: Check that member named 'f'
with void data type is emitted.
gcc/btfout.cc
gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-4.c
gcc/testsuite/gcc.dg/debug/btf/btf-struct-2.c