https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121411

--- Comment #12 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by David Faust <[email protected]>:

https://gcc.gnu.org/g:50efa788a4b6c7f619101b6156b47b91124c6dd3

commit r16-3723-g50efa788a4b6c7f619101b6156b47b91124c6dd3
Author: David Faust <[email protected]>
Date:   Thu Aug 28 09:12:55 2025 -0700

    ctf: fix integer truncations in very large structs [PR121411]

    DWARF to CTF translation for type bit sizes was using uint32_t, and for
    member offsets was inadvertently using unsigned int via get_AT_unsigned.
    For very large struct types, at least one of these could be truncated
    causing incorrect encoding of the struct type and member offsets.

    Use HOST_WIDE_INT to avoid these truncation issues and fix the encoding
    for large structs.

            PR debug/121411

    gcc/

            * dwarf2ctf.cc (ctf_get_AT_data_member_location) Use AT_unsigned
            when fetching AT_bit_offset and AT_data_member_location.  Simplify.
            (ctf_die_bitsize): Return unsigned HOST_WIDE_INT instead of
            uint32_t.
            (gen_ctf_base_type, gen_ctf_sou_type, gen_ctf_enumeration_type):
            Adapt accordingly.

    gcc/testsuite/

            * gcc.dg/debug/ctf/ctf-struct-3.c: New test.

Reply via email to