https://bugs.winehq.org/show_bug.cgi?id=49191
Bug ID: 49191 Summary: armv7l build broken: dlls/ntdll expression too complex Product: Wine Version: 5.6 Hardware: x86 OS: Linux Status: NEW Keywords: download, regression, source Severity: normal Priority: P2 Component: ntdll Assignee: wine-bugs@winehq.org Reporter: austinenglish@gmail.com Regression SHA1: 39e4b788d6ca7d1e1ad045059ec7d088fde8a0db Distribution: Debian
gcc -c -o large_int.o large_int.c -I. -I../../include -D__WINESRC__ -D_NTSYSTEM_ -D_REENTRANT -fPIC -Wall \ -pipe -fcf-protection=none -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement \ -Wempty-body -Wignored-qualifiers -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes \ -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ -gdwarf-2 -gstrict-dwarf -g -O2 -marm -mfloat-abi=hard {standard input}: Assembler messages: {standard input}:23: Error: expression too complex -- `push %ebx' {standard input}:25: Error: bad register expression {standard input}:26: Error: expression too complex -- `push %esi' {standard input}:28: Error: bad register expression {standard input}:29: Error: bad instruction `movl 12(%esp),%esi' {standard input}:30: Error: bad instruction `movl 16(%esp),%ebx' {standard input}:31: Error: bad instruction `movl 20(%esp),%ecx' {standard input}:32: Error: bad instruction `movl 24(%esp),%eax' {standard input}:33: Error: bad instruction `movl 28(%esp),%edx' {standard input}:34: Error: bad instruction `lock' {standard input}:34: Error: bad instruction `cmpxchg8b (%esi)' {standard input}:35: Error: expression too complex -- `pop %esi' {standard input}:36: Error: bad register expression {standard input}:38: Error: expression too complex -- `pop %ebx' {standard input}:39: Error: bad register expression {standard input}:41: Error: bad instruction `ret $20' make: *** [Makefile:432: large_int.o] Error 1
pi@raspberrypi:~/wine-git/dlls/ntdll $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/8/lto-wrapper Target: arm-linux-gnueabihf Configured with: ../src/configure -v --with-pkgversion='Raspbian 8.3.0-6+rpi1' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --disable-werror --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf Thread model: posix gcc version 8.3.0 (Raspbian 8.3.0-6+rpi1)
pi@raspberrypi:~/wine-git/dlls/ntdll $ as -v GNU assembler version 2.31.1 (arm-linux-gnueabihf) using BFD version (GNU Binutils for Raspbian) 2.31.1
pi@raspberrypi:~/wine-git/dlls/ntdll $ ld -v GNU ld (GNU Binutils for Raspbian) 2.31.1
39e4b788d6ca7d1e1ad045059ec7d088fde8a0db is the first bad commit commit 39e4b788d6ca7d1e1ad045059ec7d088fde8a0db Author: Alexandre Julliard julliard@winehq.org Date: Sat May 2 15:10:04 2020 +0200
ntdll: Use the standard Interlocked* functions.
Signed-off-by: Alexandre Julliard julliard@winehq.org
there's a similar regression in dlls/mf (and probably elsewhere): /usr/bin/ld: topology.o: in function `topology_generate_id': /home/pi/wine-bisect/dlls/mf/topology.c:871: undefined reference to `InterlockedCompareExchange64' /usr/bin/ld: mf.dll.so: hidden symbol `InterlockedCompareExchange64' isn't defined /usr/bin/ld: final link failed: bad value
didn't bisect it yet, but I suspect commit 5d5b6a1f35c6fee51dcef60818028061f03ce0ce.
interestingly, my other armv7l machine (PrawnOS), doesn't show this, with same gcc/ld versions (didn't compare flags closely though).