https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121411
David Faust <david.faust at oracle dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |nick.alcock at oracle dot com
--- Comment #1 from David Faust <david.faust at oracle dot com> ---
The problem here is the array type. I don't think CTF (v3) has a
representation for an array with more than 0xffff_ffff elements. Format spec
for arrays is:
typedef struct ctf_array
{
uint32_t cta_contents;
uint32_t cta_index;
uint32_t cta_nelems;
} ctf_array_t;
In this case it is the array nelems which is wrapping to 0. If such an array is
a member in the struct then the member size is sizeof (int [0]) = 0.
If we have:
int dummy [0x100000007];
then we wrap to int[7] etc.
So, this is a limitation of the format, but it is also definitely not good to
misrepresent array size due to uint32 wrapping. A warning certainly seems
warranted here. Should also make a decision on what to encode for such an
array.