mbox series

[v4,0/3] Enable clang build on Windows

Message ID 20250110203401.178532-1-pierrick.bouvier@linaro.org (mailing list archive)
Headers show
Series Enable clang build on Windows | expand

Message

Pierrick Bouvier Jan. 10, 2025, 8:33 p.m. UTC
For now, it was only possible to build plugins using GCC on Windows. However,
windows-aarch64 only supports Clang.
This biggest roadblock was to get rid of gcc_struct attribute, which is not
supported by Clang. After investigation, we proved it was safe to drop it.

Built and tested on Windows (all msys env)/Linux/MacOS for x86_64 and aarch64
hosts.

v1 contained warning fixes and various bits that have been upstreamed already.
The only bits left in this series are the gcc_struct removal, and fixing the
plugins build with clang.

This series is for 10.0, as we decided to not include the gcc_struct removal is
9.2 release.

All patches are now reviewed, so this series can be pulled. I'll report that to
MSYS2 too, so we can enable clang environments for QEMU.

v1: https://patchew.org/QEMU/20241031040426.772604-1-pierrick.bouvier@linaro.org/

v2:
- drop attribute gcc_struct instead of using -mno-ms-bitfields option
- add a section about bitfields in documentation

v3:
- explain why gcc_struct attribute matters in packed structs in commit message
- reword the bitfields documentation with suggestions given

v4:
- edit for bitfields doc requested by Philippe

Pierrick Bouvier (3):
  win32: remove usage of attribute gcc_struct
  docs/devel/style: add a section about bitfield, and disallow them for
    packed structures
  plugins: enable linking with clang/lld

 docs/devel/style.rst                      | 20 +++++++++++++++++++
 meson.build                               |  6 +++---
 include/qemu/compiler.h                   |  7 +------
 scripts/cocci-macro-file.h                |  6 +-----
 subprojects/libvhost-user/libvhost-user.h |  6 +-----
 contrib/plugins/meson.build               |  2 +-
 plugins/meson.build                       | 24 +++++++++++++++++++----
 tests/tcg/plugins/meson.build             |  3 +--
 8 files changed, 48 insertions(+), 26 deletions(-)

Comments

Pierrick Bouvier Jan. 10, 2025, 8:37 p.m. UTC | #1
On 1/10/25 12:33, Pierrick Bouvier wrote:
> For now, it was only possible to build plugins using GCC on Windows. However,
> windows-aarch64 only supports Clang.
> This biggest roadblock was to get rid of gcc_struct attribute, which is not
> supported by Clang. After investigation, we proved it was safe to drop it.
> 
> Built and tested on Windows (all msys env)/Linux/MacOS for x86_64 and aarch64
> hosts.
> 
> v1 contained warning fixes and various bits that have been upstreamed already.
> The only bits left in this series are the gcc_struct removal, and fixing the
> plugins build with clang.
> 
> This series is for 10.0, as we decided to not include the gcc_struct removal is
> 9.2 release.
> 
> All patches are now reviewed, so this series can be pulled. I'll report that to
> MSYS2 too, so we can enable clang environments for QEMU.
> 
> v1: https://patchew.org/QEMU/20241031040426.772604-1-pierrick.bouvier@linaro.org/
> 
> v2:
> - drop attribute gcc_struct instead of using -mno-ms-bitfields option
> - add a section about bitfields in documentation
> 
> v3:
> - explain why gcc_struct attribute matters in packed structs in commit message
> - reword the bitfields documentation with suggestions given
> 
> v4:
> - edit for bitfields doc requested by Philippe
> 
> Pierrick Bouvier (3):
>    win32: remove usage of attribute gcc_struct
>    docs/devel/style: add a section about bitfield, and disallow them for
>      packed structures
>    plugins: enable linking with clang/lld
> 
>   docs/devel/style.rst                      | 20 +++++++++++++++++++
>   meson.build                               |  6 +++---
>   include/qemu/compiler.h                   |  7 +------
>   scripts/cocci-macro-file.h                |  6 +-----
>   subprojects/libvhost-user/libvhost-user.h |  6 +-----
>   contrib/plugins/meson.build               |  2 +-
>   plugins/meson.build                       | 24 +++++++++++++++++++----
>   tests/tcg/plugins/meson.build             |  3 +--
>   8 files changed, 48 insertions(+), 26 deletions(-)
> 

It would be nice if a maintainer could pull this, so we can get this 
merged upstream.

Thanks,
Pierrick
Philippe Mathieu-Daudé Jan. 11, 2025, 3:47 p.m. UTC | #2
On 10/1/25 21:37, Pierrick Bouvier wrote:
> On 1/10/25 12:33, Pierrick Bouvier wrote:
>> For now, it was only possible to build plugins using GCC on Windows. 
>> However,
>> windows-aarch64 only supports Clang.
>> This biggest roadblock was to get rid of gcc_struct attribute, which 
>> is not
>> supported by Clang. After investigation, we proved it was safe to drop 
>> it.
>>
>> Built and tested on Windows (all msys env)/Linux/MacOS for x86_64 and 
>> aarch64
>> hosts.
>>
>> v1 contained warning fixes and various bits that have been upstreamed 
>> already.
>> The only bits left in this series are the gcc_struct removal, and 
>> fixing the
>> plugins build with clang.
>>
>> This series is for 10.0, as we decided to not include the gcc_struct 
>> removal is
>> 9.2 release.
>>
>> All patches are now reviewed, so this series can be pulled. I'll 
>> report that to
>> MSYS2 too, so we can enable clang environments for QEMU.
>>
>> v1: https://patchew.org/QEMU/20241031040426.772604-1- 
>> pierrick.bouvier@linaro.org/
>>
>> v2:
>> - drop attribute gcc_struct instead of using -mno-ms-bitfields option
>> - add a section about bitfields in documentation
>>
>> v3:
>> - explain why gcc_struct attribute matters in packed structs in commit 
>> message
>> - reword the bitfields documentation with suggestions given
>>
>> v4:
>> - edit for bitfields doc requested by Philippe
>>
>> Pierrick Bouvier (3):
>>    win32: remove usage of attribute gcc_struct
>>    docs/devel/style: add a section about bitfield, and disallow them for
>>      packed structures
>>    plugins: enable linking with clang/lld
>>
>>   docs/devel/style.rst                      | 20 +++++++++++++++++++
>>   meson.build                               |  6 +++---
>>   include/qemu/compiler.h                   |  7 +------
>>   scripts/cocci-macro-file.h                |  6 +-----
>>   subprojects/libvhost-user/libvhost-user.h |  6 +-----
>>   contrib/plugins/meson.build               |  2 +-
>>   plugins/meson.build                       | 24 +++++++++++++++++++----
>>   tests/tcg/plugins/meson.build             |  3 +--
>>   8 files changed, 48 insertions(+), 26 deletions(-)
>>
> 
> It would be nice if a maintainer could pull this, so we can get this 
> merged upstream.

That'd be Thomas or Alex I suppose.
Stefan Weil Jan. 11, 2025, 10:08 p.m. UTC | #3
Am 10.01.25 um 21:33 schrieb Pierrick Bouvier:
> For now, it was only possible to build plugins using GCC on Windows. However,
> windows-aarch64 only supports Clang.
> This biggest roadblock was to get rid of gcc_struct attribute, which is not
> supported by Clang. After investigation, we proved it was safe to drop it.
> 
> Built and tested on Windows (all msys env)/Linux/MacOS for x86_64 and aarch64
> hosts.
> 
> v1 contained warning fixes and various bits that have been upstreamed already.
> The only bits left in this series are the gcc_struct removal, and fixing the
> plugins build with clang.
> 
> This series is for 10.0, as we decided to not include the gcc_struct removal is
> 9.2 release.
> 
> All patches are now reviewed, so this series can be pulled. I'll report that to
> MSYS2 too, so we can enable clang environments for QEMU.
> 
> v1: https://patchew.org/QEMU/20241031040426.772604-1-pierrick.bouvier@linaro.org/
> 
> v2:
> - drop attribute gcc_struct instead of using -mno-ms-bitfields option
> - add a section about bitfields in documentation
> 
> v3:
> - explain why gcc_struct attribute matters in packed structs in commit message
> - reword the bitfields documentation with suggestions given
> 
> v4:
> - edit for bitfields doc requested by Philippe
> 
> Pierrick Bouvier (3):
>    win32: remove usage of attribute gcc_struct
>    docs/devel/style: add a section about bitfield, and disallow them for
>      packed structures
>    plugins: enable linking with clang/lld
> 
>   docs/devel/style.rst                      | 20 +++++++++++++++++++
>   meson.build                               |  6 +++---
>   include/qemu/compiler.h                   |  7 +------
>   scripts/cocci-macro-file.h                |  6 +-----
>   subprojects/libvhost-user/libvhost-user.h |  6 +-----
>   contrib/plugins/meson.build               |  2 +-
>   plugins/meson.build                       | 24 +++++++++++++++++++----
>   tests/tcg/plugins/meson.build             |  3 +--
>   8 files changed, 48 insertions(+), 26 deletions(-)

This nice series allows building QEMU for Windows with the LLVM cross 
compiler on my ARM64 machine, so you can add

Tested-by: Stefan Weil <sw@weilnetz.de>

I only needed a trivial additional fix in scripts/nsis.py for `make 
installer` because the usual GNU objdump and the LLVM objdump (or the 
cross x86_64-w64-mingw32-objdump in my test) produce slightly different 
output (indentation with \t, indentation with four spaces). I'll prepare 
a patch which eliminates the need for objdump, so no intermediate fix is 
needed for this.

Stefan W.
Pierrick Bouvier Jan. 12, 2025, 5:54 p.m. UTC | #4
On 1/11/25 14:08, Stefan Weil wrote:
> Am 10.01.25 um 21:33 schrieb Pierrick Bouvier:
>> For now, it was only possible to build plugins using GCC on Windows. However,
>> windows-aarch64 only supports Clang.
>> This biggest roadblock was to get rid of gcc_struct attribute, which is not
>> supported by Clang. After investigation, we proved it was safe to drop it.
>>
>> Built and tested on Windows (all msys env)/Linux/MacOS for x86_64 and aarch64
>> hosts.
>>
>> v1 contained warning fixes and various bits that have been upstreamed already.
>> The only bits left in this series are the gcc_struct removal, and fixing the
>> plugins build with clang.
>>
>> This series is for 10.0, as we decided to not include the gcc_struct removal is
>> 9.2 release.
>>
>> All patches are now reviewed, so this series can be pulled. I'll report that to
>> MSYS2 too, so we can enable clang environments for QEMU.
>>
>> v1: https://patchew.org/QEMU/20241031040426.772604-1-pierrick.bouvier@linaro.org/
>>
>> v2:
>> - drop attribute gcc_struct instead of using -mno-ms-bitfields option
>> - add a section about bitfields in documentation
>>
>> v3:
>> - explain why gcc_struct attribute matters in packed structs in commit message
>> - reword the bitfields documentation with suggestions given
>>
>> v4:
>> - edit for bitfields doc requested by Philippe
>>
>> Pierrick Bouvier (3):
>>     win32: remove usage of attribute gcc_struct
>>     docs/devel/style: add a section about bitfield, and disallow them for
>>       packed structures
>>     plugins: enable linking with clang/lld
>>
>>    docs/devel/style.rst                      | 20 +++++++++++++++++++
>>    meson.build                               |  6 +++---
>>    include/qemu/compiler.h                   |  7 +------
>>    scripts/cocci-macro-file.h                |  6 +-----
>>    subprojects/libvhost-user/libvhost-user.h |  6 +-----
>>    contrib/plugins/meson.build               |  2 +-
>>    plugins/meson.build                       | 24 +++++++++++++++++++----
>>    tests/tcg/plugins/meson.build             |  3 +--
>>    8 files changed, 48 insertions(+), 26 deletions(-)
> 
> This nice series allows building QEMU for Windows with the LLVM cross
> compiler on my ARM64 machine, so you can add
> 
> Tested-by: Stefan Weil <sw@weilnetz.de>
> 
> I only needed a trivial additional fix in scripts/nsis.py for `make
> installer` because the usual GNU objdump and the LLVM objdump (or the
> cross x86_64-w64-mingw32-objdump in my test) produce slightly different
> output (indentation with \t, indentation with four spaces). I'll prepare
> a patch which eliminates the need for objdump, so no intermediate fix is
> needed for this.
> 
> Stefan W.
> 

Thanks for testing it Stefan.

Once merged, I'll share this with MSYS2 folks, so they can backport this 
series to 9.2, and enable clang based environments (including for 
windows-arm64).

Regards,
Pierrick
Philippe Mathieu-Daudé Jan. 12, 2025, 6:03 p.m. UTC | #5
On 11/1/25 16:47, Philippe Mathieu-Daudé wrote:
> On 10/1/25 21:37, Pierrick Bouvier wrote:
>> On 1/10/25 12:33, Pierrick Bouvier wrote:
>>> For now, it was only possible to build plugins using GCC on Windows. 
>>> However,
>>> windows-aarch64 only supports Clang.
>>> This biggest roadblock was to get rid of gcc_struct attribute, which 
>>> is not
>>> supported by Clang. After investigation, we proved it was safe to 
>>> drop it.
>>>
>>> Built and tested on Windows (all msys env)/Linux/MacOS for x86_64 and 
>>> aarch64
>>> hosts.
>>>
>>> v1 contained warning fixes and various bits that have been upstreamed 
>>> already.
>>> The only bits left in this series are the gcc_struct removal, and 
>>> fixing the
>>> plugins build with clang.
>>>
>>> This series is for 10.0, as we decided to not include the gcc_struct 
>>> removal is
>>> 9.2 release.
>>>
>>> All patches are now reviewed, so this series can be pulled. I'll 
>>> report that to
>>> MSYS2 too, so we can enable clang environments for QEMU.
>>>
>>> v1: https://patchew.org/QEMU/20241031040426.772604-1- 
>>> pierrick.bouvier@linaro.org/
>>>
>>> v2:
>>> - drop attribute gcc_struct instead of using -mno-ms-bitfields option
>>> - add a section about bitfields in documentation
>>>
>>> v3:
>>> - explain why gcc_struct attribute matters in packed structs in 
>>> commit message
>>> - reword the bitfields documentation with suggestions given
>>>
>>> v4:
>>> - edit for bitfields doc requested by Philippe
>>>
>>> Pierrick Bouvier (3):
>>>    win32: remove usage of attribute gcc_struct
>>>    docs/devel/style: add a section about bitfield, and disallow them for
>>>      packed structures
>>>    plugins: enable linking with clang/lld
>>>
>>>   docs/devel/style.rst                      | 20 +++++++++++++++++++
>>>   meson.build                               |  6 +++---
>>>   include/qemu/compiler.h                   |  7 +------
>>>   scripts/cocci-macro-file.h                |  6 +-----
>>>   subprojects/libvhost-user/libvhost-user.h |  6 +-----
>>>   contrib/plugins/meson.build               |  2 +-
>>>   plugins/meson.build                       | 24 +++++++++++++++++++----
>>>   tests/tcg/plugins/meson.build             |  3 +--
>>>   8 files changed, 48 insertions(+), 26 deletions(-)
>>>
>>
>> It would be nice if a maintainer could pull this, so we can get this 
>> merged upstream.
> 
> That'd be Thomas or Alex I suppose.

(That said, I don't mind to merge if they are busy).

Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Thomas Huth Jan. 13, 2025, 6:26 a.m. UTC | #6
On 11/01/2025 16.47, Philippe Mathieu-Daudé wrote:
> On 10/1/25 21:37, Pierrick Bouvier wrote:
>> On 1/10/25 12:33, Pierrick Bouvier wrote:
>>> For now, it was only possible to build plugins using GCC on Windows. 
>>> However,
>>> windows-aarch64 only supports Clang.
>>> This biggest roadblock was to get rid of gcc_struct attribute, which is not
>>> supported by Clang. After investigation, we proved it was safe to drop it.
>>>
>>> Built and tested on Windows (all msys env)/Linux/MacOS for x86_64 and 
>>> aarch64
>>> hosts.
>>>
>>> v1 contained warning fixes and various bits that have been upstreamed 
>>> already.
>>> The only bits left in this series are the gcc_struct removal, and fixing the
>>> plugins build with clang.
>>>
>>> This series is for 10.0, as we decided to not include the gcc_struct 
>>> removal is
>>> 9.2 release.
>>>
>>> All patches are now reviewed, so this series can be pulled. I'll report 
>>> that to
>>> MSYS2 too, so we can enable clang environments for QEMU.
>>>
>>> v1: https://patchew.org/QEMU/20241031040426.772604-1- 
>>> pierrick.bouvier@linaro.org/
>>>
>>> v2:
>>> - drop attribute gcc_struct instead of using -mno-ms-bitfields option
>>> - add a section about bitfields in documentation
>>>
>>> v3:
>>> - explain why gcc_struct attribute matters in packed structs in commit 
>>> message
>>> - reword the bitfields documentation with suggestions given
>>>
>>> v4:
>>> - edit for bitfields doc requested by Philippe
>>>
>>> Pierrick Bouvier (3):
>>>    win32: remove usage of attribute gcc_struct
>>>    docs/devel/style: add a section about bitfield, and disallow them for
>>>      packed structures
>>>    plugins: enable linking with clang/lld
>>>
>>>   docs/devel/style.rst                      | 20 +++++++++++++++++++
>>>   meson.build                               |  6 +++---
>>>   include/qemu/compiler.h                   |  7 +------
>>>   scripts/cocci-macro-file.h                |  6 +-----
>>>   subprojects/libvhost-user/libvhost-user.h |  6 +-----
>>>   contrib/plugins/meson.build               |  2 +-
>>>   plugins/meson.build                       | 24 +++++++++++++++++++----
>>>   tests/tcg/plugins/meson.build             |  3 +--
>>>   8 files changed, 48 insertions(+), 26 deletions(-)
>>>
>>
>> It would be nice if a maintainer could pull this, so we can get this 
>> merged upstream.
> 
> That'd be Thomas or Alex I suppose.

This touches plugins, so I think it should go through Alex' tree?

  Thomas
Pierrick Bouvier Jan. 13, 2025, 8:17 p.m. UTC | #7
On 1/12/25 22:26, Thomas Huth wrote:
> On 11/01/2025 16.47, Philippe Mathieu-Daudé wrote:
>> On 10/1/25 21:37, Pierrick Bouvier wrote:
>>> On 1/10/25 12:33, Pierrick Bouvier wrote:
>>>> For now, it was only possible to build plugins using GCC on Windows.
>>>> However,
>>>> windows-aarch64 only supports Clang.
>>>> This biggest roadblock was to get rid of gcc_struct attribute, which is not
>>>> supported by Clang. After investigation, we proved it was safe to drop it.
>>>>
>>>> Built and tested on Windows (all msys env)/Linux/MacOS for x86_64 and
>>>> aarch64
>>>> hosts.
>>>>
>>>> v1 contained warning fixes and various bits that have been upstreamed
>>>> already.
>>>> The only bits left in this series are the gcc_struct removal, and fixing the
>>>> plugins build with clang.
>>>>
>>>> This series is for 10.0, as we decided to not include the gcc_struct
>>>> removal is
>>>> 9.2 release.
>>>>
>>>> All patches are now reviewed, so this series can be pulled. I'll report
>>>> that to
>>>> MSYS2 too, so we can enable clang environments for QEMU.
>>>>
>>>> v1: https://patchew.org/QEMU/20241031040426.772604-1-
>>>> pierrick.bouvier@linaro.org/
>>>>
>>>> v2:
>>>> - drop attribute gcc_struct instead of using -mno-ms-bitfields option
>>>> - add a section about bitfields in documentation
>>>>
>>>> v3:
>>>> - explain why gcc_struct attribute matters in packed structs in commit
>>>> message
>>>> - reword the bitfields documentation with suggestions given
>>>>
>>>> v4:
>>>> - edit for bitfields doc requested by Philippe
>>>>
>>>> Pierrick Bouvier (3):
>>>>     win32: remove usage of attribute gcc_struct
>>>>     docs/devel/style: add a section about bitfield, and disallow them for
>>>>       packed structures
>>>>     plugins: enable linking with clang/lld
>>>>
>>>>    docs/devel/style.rst                      | 20 +++++++++++++++++++
>>>>    meson.build                               |  6 +++---
>>>>    include/qemu/compiler.h                   |  7 +------
>>>>    scripts/cocci-macro-file.h                |  6 +-----
>>>>    subprojects/libvhost-user/libvhost-user.h |  6 +-----
>>>>    contrib/plugins/meson.build               |  2 +-
>>>>    plugins/meson.build                       | 24 +++++++++++++++++++----
>>>>    tests/tcg/plugins/meson.build             |  3 +--
>>>>    8 files changed, 48 insertions(+), 26 deletions(-)
>>>>
>>>
>>> It would be nice if a maintainer could pull this, so we can get this
>>> merged upstream.
>>
>> That'd be Thomas or Alex I suppose.
> 
> This touches plugins, so I think it should go through Alex' tree?
> 
>    Thomas
> 
> 

It's touching plugins, but it does a system wide change as well (which 
is the most important part).

It's not really important who merges this, but it would be better if the 
series could be pulled as a whole, instead of breaking it into multiple 
subsystems.

Thanks,
Pierrick
Alex Bennée Jan. 13, 2025, 9:19 p.m. UTC | #8
Pierrick Bouvier <pierrick.bouvier@linaro.org> writes:

> On 1/12/25 22:26, Thomas Huth wrote:
>> On 11/01/2025 16.47, Philippe Mathieu-Daudé wrote:
>>> On 10/1/25 21:37, Pierrick Bouvier wrote:
>>>> On 1/10/25 12:33, Pierrick Bouvier wrote:
>>>>> For now, it was only possible to build plugins using GCC on Windows.
>>>>> However,
>>>>> windows-aarch64 only supports Clang.
>>>>> This biggest roadblock was to get rid of gcc_struct attribute, which is not
>>>>> supported by Clang. After investigation, we proved it was safe to drop it.
>>>>>
>>>>> Built and tested on Windows (all msys env)/Linux/MacOS for x86_64 and
>>>>> aarch64
>>>>> hosts.
>>>>>
>>>>> v1 contained warning fixes and various bits that have been upstreamed
>>>>> already.
>>>>> The only bits left in this series are the gcc_struct removal, and fixing the
>>>>> plugins build with clang.
>>>>>
>>>>> This series is for 10.0, as we decided to not include the gcc_struct
>>>>> removal is
>>>>> 9.2 release.
>>>>>
>>>>> All patches are now reviewed, so this series can be pulled. I'll report
>>>>> that to
>>>>> MSYS2 too, so we can enable clang environments for QEMU.
>>>>>
>>>>> v1: https://patchew.org/QEMU/20241031040426.772604-1-
>>>>> pierrick.bouvier@linaro.org/
>>>>>
>>>>> v2:
>>>>> - drop attribute gcc_struct instead of using -mno-ms-bitfields option
>>>>> - add a section about bitfields in documentation
>>>>>
>>>>> v3:
>>>>> - explain why gcc_struct attribute matters in packed structs in commit
>>>>> message
>>>>> - reword the bitfields documentation with suggestions given
>>>>>
>>>>> v4:
>>>>> - edit for bitfields doc requested by Philippe
>>>>>
>>>>> Pierrick Bouvier (3):
>>>>>     win32: remove usage of attribute gcc_struct
>>>>>     docs/devel/style: add a section about bitfield, and disallow them for
>>>>>       packed structures
>>>>>     plugins: enable linking with clang/lld
>>>>>
>>>>>    docs/devel/style.rst                      | 20 +++++++++++++++++++
>>>>>    meson.build                               |  6 +++---
>>>>>    include/qemu/compiler.h                   |  7 +------
>>>>>    scripts/cocci-macro-file.h                |  6 +-----
>>>>>    subprojects/libvhost-user/libvhost-user.h |  6 +-----
>>>>>    contrib/plugins/meson.build               |  2 +-
>>>>>    plugins/meson.build                       | 24 +++++++++++++++++++----
>>>>>    tests/tcg/plugins/meson.build             |  3 +--
>>>>>    8 files changed, 48 insertions(+), 26 deletions(-)
>>>>>
>>>>
>>>> It would be nice if a maintainer could pull this, so we can get this
>>>> merged upstream.
>>>
>>> That'd be Thomas or Alex I suppose.
>> This touches plugins, so I think it should go through Alex' tree?
>>    Thomas
>> 
>
> It's touching plugins, but it does a system wide change as well (which
> is the most important part).
>
> It's not really important who merges this, but it would be better if
> the series could be pulled as a whole, instead of breaking it into
> multiple subsystems.

I'll look at it tomorrow when going through my maintainer queue.

>
> Thanks,
> Pierrick
Pierrick Bouvier Jan. 13, 2025, 9:22 p.m. UTC | #9
On 1/13/25 13:19, Alex Bennée wrote:
> Pierrick Bouvier <pierrick.bouvier@linaro.org> writes:
> 
>> On 1/12/25 22:26, Thomas Huth wrote:
>>> On 11/01/2025 16.47, Philippe Mathieu-Daudé wrote:
>>>> On 10/1/25 21:37, Pierrick Bouvier wrote:
>>>>> On 1/10/25 12:33, Pierrick Bouvier wrote:
>>>>>> For now, it was only possible to build plugins using GCC on Windows.
>>>>>> However,
>>>>>> windows-aarch64 only supports Clang.
>>>>>> This biggest roadblock was to get rid of gcc_struct attribute, which is not
>>>>>> supported by Clang. After investigation, we proved it was safe to drop it.
>>>>>>
>>>>>> Built and tested on Windows (all msys env)/Linux/MacOS for x86_64 and
>>>>>> aarch64
>>>>>> hosts.
>>>>>>
>>>>>> v1 contained warning fixes and various bits that have been upstreamed
>>>>>> already.
>>>>>> The only bits left in this series are the gcc_struct removal, and fixing the
>>>>>> plugins build with clang.
>>>>>>
>>>>>> This series is for 10.0, as we decided to not include the gcc_struct
>>>>>> removal is
>>>>>> 9.2 release.
>>>>>>
>>>>>> All patches are now reviewed, so this series can be pulled. I'll report
>>>>>> that to
>>>>>> MSYS2 too, so we can enable clang environments for QEMU.
>>>>>>
>>>>>> v1: https://patchew.org/QEMU/20241031040426.772604-1-
>>>>>> pierrick.bouvier@linaro.org/
>>>>>>
>>>>>> v2:
>>>>>> - drop attribute gcc_struct instead of using -mno-ms-bitfields option
>>>>>> - add a section about bitfields in documentation
>>>>>>
>>>>>> v3:
>>>>>> - explain why gcc_struct attribute matters in packed structs in commit
>>>>>> message
>>>>>> - reword the bitfields documentation with suggestions given
>>>>>>
>>>>>> v4:
>>>>>> - edit for bitfields doc requested by Philippe
>>>>>>
>>>>>> Pierrick Bouvier (3):
>>>>>>      win32: remove usage of attribute gcc_struct
>>>>>>      docs/devel/style: add a section about bitfield, and disallow them for
>>>>>>        packed structures
>>>>>>      plugins: enable linking with clang/lld
>>>>>>
>>>>>>     docs/devel/style.rst                      | 20 +++++++++++++++++++
>>>>>>     meson.build                               |  6 +++---
>>>>>>     include/qemu/compiler.h                   |  7 +------
>>>>>>     scripts/cocci-macro-file.h                |  6 +-----
>>>>>>     subprojects/libvhost-user/libvhost-user.h |  6 +-----
>>>>>>     contrib/plugins/meson.build               |  2 +-
>>>>>>     plugins/meson.build                       | 24 +++++++++++++++++++----
>>>>>>     tests/tcg/plugins/meson.build             |  3 +--
>>>>>>     8 files changed, 48 insertions(+), 26 deletions(-)
>>>>>>
>>>>>
>>>>> It would be nice if a maintainer could pull this, so we can get this
>>>>> merged upstream.
>>>>
>>>> That'd be Thomas or Alex I suppose.
>>> This touches plugins, so I think it should go through Alex' tree?
>>>     Thomas
>>>
>>
>> It's touching plugins, but it does a system wide change as well (which
>> is the most important part).
>>
>> It's not really important who merges this, but it would be better if
>> the series could be pulled as a whole, instead of breaking it into
>> multiple subsystems.
> 
> I'll look at it tomorrow when going through my maintainer queue.
>

Thanks Alex :).

>>
>> Thanks,
>> Pierrick
>
Alex Bennée Jan. 14, 2025, 8:20 a.m. UTC | #10
Pierrick Bouvier <pierrick.bouvier@linaro.org> writes:

> For now, it was only possible to build plugins using GCC on Windows. However,
> windows-aarch64 only supports Clang.
> This biggest roadblock was to get rid of gcc_struct attribute, which is not
> supported by Clang. After investigation, we proved it was safe to drop it.
>
> Built and tested on Windows (all msys env)/Linux/MacOS for x86_64 and aarch64
> hosts.
<snip>

Queued to maintainer/jan-2025 and testing/next, thanks.
Philippe Mathieu-Daudé Jan. 14, 2025, 8:35 a.m. UTC | #11
On 14/1/25 09:20, Alex Bennée wrote:
> Pierrick Bouvier <pierrick.bouvier@linaro.org> writes:
> 
>> For now, it was only possible to build plugins using GCC on Windows. However,
>> windows-aarch64 only supports Clang.
>> This biggest roadblock was to get rid of gcc_struct attribute, which is not
>> supported by Clang. After investigation, we proved it was safe to drop it.
>>
>> Built and tested on Windows (all msys env)/Linux/MacOS for x86_64 and aarch64
>> hosts.
> <snip>
> 
> Queued to maintainer/jan-2025 and testing/next, thanks.

Please also take this one on top:
https://lore.kernel.org/qemu-devel/20250111215244.1680931-1-sw@weilnetz.de/

Thanks!