On Tue, 27 Oct 2020 12:26:21 +0100 Thomas Huth <th...@redhat.com> wrote:
> On 26/10/2020 16.12, Paolo Bonzini wrote: > > On 26/10/20 16:03, Daniele Buono wrote: > >> Hi Paolo, > >> I reorganized UASStatus to put uas_iu at the end and it works fine. > >> Unfortunately, this uncovered another part of the code with a similar > >> issue (variable sized type not at the end of the struct), here: > >> > >> In file included from ../qemu-cfi-v3/target/s390x/diag.c:21: > >> ../qemu-cfi-v3/hw/s390x/ipl.h:161:23: error: field 'iplb' with variable > >> sized type 'IplParameterBlock' (aka 'union IplParameterBlock') not at > >> the end of a struct or class is a GNU extension > >> [-Werror,-Wgnu-variable-sized-type-not-at-end] > >> IplParameterBlock iplb; > >> ^ > >> ../qemu-cfi-v3/hw/s390x/ipl.h:162:23: error: field 'iplb_pv' with > >> variable sized type 'IplParameterBlock' (aka 'union IplParameterBlock') > >> not at the end of a struct or class is a GNU extension > >> [-Werror,-Wgnu-variable-sized-type-not-at-end] > >> IplParameterBlock iplb_pv; > >> > >> My understanding is that each of these IplParameterBlock may contain > >> either a IPLBlockPV or a IplBlockFcp, which both end with a variable > >> sized field (an array). > >> > >> Adding maintainers of s390x to see if they have a suggested solution to > >> avoid disabling the warning. > > > > This one seems okay because the union constrains the size to 4K. If > > "[0]" is enough to shut up the compiler, I'd say do that. > > The "IplBlockFcp fcp" part seems to be completely unused, so I think you > could even remove that IplBlockFcp struct. For IPLBlockPV I agree with > Paolo, it's likely easiest to use [0] for that struct. The fcp block had probably been added for completeness' sake, but we do not support list-directed IPL anyway. Not sure if we actually want it, as we use a different mechanism for IPLing from SCSI devices. So yes, maybe we should just drop it.