On Mon, Feb 21, 2022 at 01:22:53PM -0500, Steve Grubb wrote: > Hello, > > I have a FTBFS package, audit, that has a strange problem that I'd like to > run by the devel list. It is a common idiom in the kernel to do something > like: > > struct foo{ > unsigned int barlen; > char bar[]; > }; > > There are about 80 instances of this in the kernel headers. When one of these > headers is included by SWIG, it makes code like this: > > if (arg2) { > arg1->bar = (char [])(char *)memcpy(malloc((size)*sizeof(char)), (const > char *)(arg2), sizeof(char)*(size)); > } else { > arg1->bar = 0; > } > > which results in > > error: cast specifies array type > > and > > error: assignment to expression with array type. > > Is this intended to be an error by gcc-12? GCC 11 (gcc-11.2.1-9.fc35.x86_64) gives plenty of errors with this code: array.c: In function ‘f’: array.c:14:8: error: cast specifies array type 14 | (char [])(char *)memcpy(malloc((size)*sizeof(char)), | ^ array.c:13:16: error: invalid use of flexible array member 13 | arg1->bar = | ^ array.c:17:16: error: invalid use of flexible array member 17 | arg1->bar = 0; | ^ In fact these are identical in GCC 12 (gcc-12.0.1-0.6.fc36.x86_64). So whatever it is, I don't think it has anything to do with GCC 12. I wonder if this code was meant to be compiled with an unusual -std flag? (I tried -std=c90 and it seems to make no difference.) > One fix is to change the struct decalaration to bar[0]; and gcc > doesn't error out on that. But that will take some time to get in > the upstream kernel. Just curious if this is intended by gcc or a > problem of SWIG/kernel? Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-top is 'top' for virtual machines. Tiny program with many powerful monitoring features, net stats, disk stats, logging, etc. http://people.redhat.com/~rjones/virt-top _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure