Hi On Fri, Jul 28, 2023 at 12:59 PM Daniel P. Berrangé <berra...@redhat.com> wrote: > > On Fri, Jul 28, 2023 at 10:35:35AM +0200, Thomas Huth wrote: > > On 27/07/2023 12.39, Daniel P. Berrangé wrote: > > > On Wed, Jul 26, 2023 at 08:21:33PM +0200, Thomas Huth wrote: > > > > On 26/07/2023 18.19, Daniel P. Berrangé wrote: > > ... > > > > Anyway, before we unify the compiler package name suffix between the two > > > > jobs, I really would like to see whether the mingw Clang builds QEMU > > > > faster > > > > in the 64-bit job ... but so far I failed to convince meson to accept > > > > the > > > > Clang from the mingw package ... does anybody know how to use Clang with > > > > MSYS2 properly? > > > > > > AFAIK it shouldn't be anything worse than > > > > > > CC=clang ./configure .... > > > > > > if that doesn't work then its a bug IMHO > > > > No, it's not that easy ... As Marc-André explained to me, MSYS2 maintains a > > completely separate environment for Clang, i.e. you have to select this > > different environment with $env:MSYSTEM = 'CLANG64' and then install the > > packages that have the "mingw-w64-clang-x86_64-" prefix. > > > > After lots of trial and error, I was able to get a test build here: > > > > https://gitlab.com/thuth/qemu/-/jobs/4758605925 > > > > I had to disable Spice and use --disable-werror in that build to make it > > succeed, but at least it shows that Clang seems to be a little bit faster - > > the job finished in 58 minutes. So if we can get the warnings fixed, this > > might be a solution for the timeouts here... > > Those packing warnings look pretty serious > > C:/GitLab-Runner/builds/thuth/qemu/include/block/nvme.h:1781:16: warning: > unknown attribute 'gcc_struct' ignored [-Wunknown-attributes] > > This means CLang is using the MSVC struct packing ABI for bitfields, > which is different from the GCC struct packing ABI. If any of those > structs use bitfields and are exposed as guest hardware ABI, or in > migration vmstate, then this is potentially broken compilation. >
Yes .. gcc >=4.7 and clang >=12 have mms-bitfiles enabled by default, but we can't undo that MS struct packing on clang apparently: https://discourse.llvm.org/t/how-to-undo-the-effect-of-mms-bitfields/72271