[Bug 60022] New: build failure on Debian armhf:
http://bugs.winehq.org/show_bug.cgi?id=60022 Bug ID: 60022 Summary: build failure on Debian armhf: Product: vkd3d Version: 2.0 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: vkd3d Assignee: wine-bugs@list.winehq.org Reporter: smcv@collabora.com Target Milestone: --- Distribution: --- To reproduce with cross-compilers (can be run on any machine, including x86): $ podman run --rm -it debian:sid-slim # apt update # apt upgrade # apt install crossbuild-essential-armhf bison debhelper flex pkgconf:armhf spirv-headers libjson-perl libncurses-dev:armhf libvulkan-dev:armhf libxcb-util-dev:armhf libxcb-icccm4-dev:armhf libxcb-keysyms1-dev:armhf help2man git ca-certificates mingw-w64-tools # git clone https://gitlab.winehq.org/wine/vkd3d.git /vkd3d # cd /vkd3d # git reset --hard vkd3d-2.0 # also fails with git master # ./autogen.sh # ./configure --host=arm-linux-gnueabihf --build=$(dpkg-architecture -qDEB_BUILD_GNU_TYPE) --enable-demos --with-ncurses --with-xcb --disable-doxygen-doc WIDL=i686-w64-mingw32-widl CFLAGS=-Wno-attributes # make -j5 -k (CFLAGS=-Wno-attributes is non-essential, but it silences a very large number of "warning: 'force_align_arg_pointer' attribute directive ignored" and "warning: 'stdcall' attribute directive ignored" on non-x86) Expected result: successful build. vkd3d-1.2 built successfully on armhf, but unfortunately intermediate versions between 1.2 and 2.0 never made it into Debian. Actual result: the demos fail to compile with messages like: {standard input}: Assembler messages: {standard input}:6983: Error: unrecognized symbol type "" {standard input}:6989: Error: unrecognized symbol type "" make[1]: *** [Makefile:2169: demos/vkd3d_triangle-triangle.o] Error 1 I think this is an architecture-specific or compiler-specific problem with the DEMO_EMBED macro in demo.h, which emulates C23 #embed. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60022 Simon McVittie <smcv@collabora.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|build failure on Debian |build failure on Debian |armhf: |armhf: Error: unrecognized | |symbol type "" -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60022 --- Comment #1 from Simon McVittie <smcv@collabora.com> --- Created attachment 81450 --> http://bugs.winehq.org/attachment.cgi?id=81450 demos: Use STT_OBJECT syntax when emulating #embed As documented in <https://sourceware.org/binutils/docs/as/Type.html>, the `@object` syntax won't work on all architectures, because `@` is a comment prefix on some architectures. According to <https://sourceware.org/binutils/docs/as/ARM_002dChars.html>, 32-bit ARM is one of those architectures. Use the STT_OBJECT syntax instead, which is recommended in <https://sourceware.org/binutils/docs/as/Type.html> as being supported by GNU `as` on all architectures. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=60022 Bug-Debian: https://bugs.debian.org/1142193 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60022 --- Comment #2 from Simon McVittie <smcv@collabora.com> --- The attached patch seems to work. If vkd3d wants to support non-GNU-compatible compilers/assemblers, the other way to do this might be something like this (untested): diff --git a/demos/demo.h b/demos/demo.h index 6a7077f5..1fa958db 100644 --- a/demos/demo.h +++ b/demos/demo.h @@ -48,6 +48,11 @@ #define DEMO_ASM_PUSHSECTION ".pushsection __TEXT,__const\n\t" #define DEMO_ASM_POPSECTION ".popsection\n\t" #define DEMO_ASM_OBJECT_TYPE(name) +#elif defined(__arm__) +#define DEMO_ASM_PUSHSECTION ".pushsection .rodata\n\t" +#define DEMO_ASM_POPSECTION ".popsection\n\t" +/* @ is the comment character on 32-bit ARM, so we can't use @object */ +#define DEMO_ASM_OBJECT_TYPE(name) ".type "name", STT_OBJECT\n\t" #else #define DEMO_ASM_PUSHSECTION ".pushsection .rodata\n\t" #define DEMO_ASM_POPSECTION ".popsection\n\t" but that seems more complicated, and perhaps unnecessary? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60022 --- Comment #3 from Simon McVittie <smcv@collabora.com> --- Unfortunately, while this does build successfully on armhf, the test suite fails: when running in an armhf chroot on a 32-bit-capable arm64 machine, most of the build-time tests segfault. I think that's an unrelated issue: this issue report is specific to the demos, not the test suite. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60022 Simon McVittie <smcv@collabora.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60022 Simon McVittie <smcv@collabora.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Hardware|x86-64 |arm -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60022 --- Comment #4 from Henri Verbeet <hverbeet@gmail.com> --- (In reply to Simon McVittie from comment #2)
The attached patch seems to work.
If vkd3d wants to support non-GNU-compatible compilers/assemblers, the other way to do this might be something like this (untested):
That patch looks fine to me. Would you like me to pick that up, or will you submit a merge request yourself? I think the only non-GNU assembler we (currently) care about is Clang, but a quick test seems to suggest it understands STT_OBJECT just fine. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60022 --- Comment #5 from Simon McVittie <smcv@collabora.com> ---
That patch looks fine to me.
Do you mean you prefer the tested/simpler https://bugs.winehq.org/show_bug.cgi?id=60022#c1 (STT_OBJECT on all non-Win32 non-Apple)? Or would you prefer the as-yet-untested https://bugs.winehq.org/show_bug.cgi?id=60022#c2 (STT_OBJECT on 32-bit ARM only, @object on other non-Win32 non-Apple)?
I think the only non-GNU assembler we (currently) care about is Clang, but a quick test seems to suggest it understands STT_OBJECT just fine.
In my experience Clang generally aims to be a drop-in replacement for GNU toolchains, so following the GNU recommendation should hopefully be fine for both.
Would you like me to pick that up, or will you submit a merge request yourself?
Sorry, I thought WineHQ still used a patches-on-Bugzilla workflow! If you could apply this yourself, that would be great - it seems I already have a WineHQ Gitlab account, but it has been dormant for quite a long time (I'm trying to recover it now). -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60022 --- Comment #6 from Simon McVittie <smcv@collabora.com> --- I was able to recover my WineHQ Gitlab account, so the patch here is also available as: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/2138 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60022 --- Comment #7 from Henri Verbeet <hverbeet@gmail.com> --- (In reply to Simon McVittie from comment #5)
That patch looks fine to me.
Do you mean you prefer the tested/simpler https://bugs.winehq.org/show_bug.cgi?id=60022#c1 (STT_OBJECT on all non-Win32 non-Apple)?
Or would you prefer the as-yet-untested https://bugs.winehq.org/show_bug.cgi?id=60022#c2 (STT_OBJECT on 32-bit ARM only, @object on other non-Win32 non-Apple)?
Sorry, I see that quote was slightly ambiguous; I meant the first one.
Would you like me to pick that up, or will you submit a merge request yourself?
Sorry, I thought WineHQ still used a patches-on-Bugzilla workflow!
Wine never had that as an official workflow, I'm afraid. Things sometimes get picked up from Bugzilla, but that's mostly up to individual developers. We did use to submit patches through the mailing list, but these days it's pretty much all on Gitlab. (In reply to Simon McVittie from comment #6)
I was able to recover my WineHQ Gitlab account, so the patch here is also available as: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/2138
Great, thanks. :) I'll commit that, although it may end up being after the weekend. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60022 --- Comment #8 from Henri Verbeet <hverbeet@gmail.com> --- Should be fixed by commit 5ec6038f7b0e0d6c7d5ad2501567aabce2c6e0f9. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (1)
-
WineHQ Bugzilla