> Editing away the check may have worked when it was first done (in https://salsa.debian.org/wine- team/wine/-/commit/2c3ae8a186f255958da213fe35510908d9ca50ca, for Wine 7.0), but for the current Wine versions, this no longer results in a functioning version of Wine.
To clarify this; initially, compiling for arm64 with GCC would error out at configure time, due to `__builtin_ms_va_list` not being supported - see https://gitlab.winehq.org/wine/wine/-/blob/wine-5.0/configure.ac?ref_type=tags#L211-216. If this configure check was removed/bypassed, compiling would still fail for the exact same reason. However this changed in https://gitlab.winehq.org/wine/wine/-/commit/dac1e16dd4edc8404c59dc63ae708cd8bb50a38a. This made the use of `__builtin_ms_va_list` and `__builtin_ms_va_start` etc optional on the code level. This was not intended to make it possible to build Wine with a compiler that doesn't support this type; the assumption was still that configure disallows such build configurations. The reason was that the Wine headers are also included when building the widl tool, which is used as part of mingw-w64-tools - this allowed building the widl tool on Linux/aarch64 with GCC. But if the configure check is bypassed, building still succeeds, but you get a build of Wine that uses the wrong ABI for varargs. This is the case of the Wine 7.0 and 8.0 builds in Debian bullseye-backports and bookworm. Further along, in https://gitlab.winehq.org/wine/wine/-/commit/11486a7b48aa43421ada5a557d892feabf27b372 (since Wine 7.4), the configure check was changed from requiring `__builtin_ms_va_list` to explicitly requiring a PE cross compiler. Bypassing this check also still mostly seemed benign at the time (Wine 8.0 in Debian bookworm also mostly seems to work, but also has incorrect handling of varargs), but at some point later, the code probably strictly started assuming that arm64 builds have the userland DLLs built as PE, not ELF. Thus since Wine 9.0, it simply hangs on startup when the requirement for a PE cross compiler has been bypassed. (Also, since Wine 10.0, a PE cross compiler is required for 32 bit arm as well. On 32 bit arm on Wine 10.0, building with plain vanilla Clang doesn't work unfortunately, it requires llvm-mingw. But since Wine 10.3, the necessary compiler builtins are provided by Wine too. I have a backport branch for 10.0 prepared for this at https://gitlab.winehq.org/mstorsjo/wine/-/commits/arm-builtins-10.0.) -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2102681 Title: Wine in Ubuntu 24.04/arm64 entirely broken To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/wine/+bug/2102681/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
