[Bug 46079] Support 32-bit ARM hard-float cross-toolchains with GNU binutils assembler that doesn 't implicitly assume '.fpu {vfp,neon}' (Yocto/Poky SDK)

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Jul 7 10:01:16 CDT 2019


https://bugs.winehq.org/show_bug.cgi?id=46079

--- Comment #2 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

revisiting, still present.

--- snip ---
...
arm-pokymllib32-linux-gnueabi-gcc  -march=armv7-a -mthumb -mfpu=neon-vfpv4
-mfloat-abi=hard
--sysroot=/home/focht/projects/poky/sdk-install/sysroots/aarch64-poky-linux -c
-o wcs.o /home/focht/projects/wine/mainline-src/dlls/crtdll/../msvcrt/wcs.c -I.
\
  -I/home/focht/projects/wine/mainline-src/dlls/crtdll \
  -I/home/focht/projects/wine/mainline-src/dlls/crtdll/../msvcrt
-I../../include \
  -I/home/focht/projects/wine/mainline-src/include -D__WINESRC__ -D_MT
-D_MSVCR_VER=0 -D_CRTDLL \
  -D_REENTRANT -fPIC -Wall -pipe -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
/home/focht/projects/wine/mainline-build-x86_64/tools/winegcc/winegcc -o
crtdll.dll.so \
  -B/home/focht/projects/wine/mainline-build-x86_64/tools/winebuild
--sysroot=../.. -b \
  arm-pokymllib32-linux-gnueabi -marm -mfloat-abi=hard -fPIC
-fasynchronous-unwind-tables -shared \
  /home/focht/projects/wine/mainline-src/dlls/crtdll/crtdll.spec console.o
cpp.o ctype.o data.o \
  dir.o environ.o errno.o except.o except_arm.o except_arm64.o except_i386.o
except_x86_64.o exit.o \
  file.o heap.o locale.o lock.o main.o math.o mbcs.o misc.o process.o scanf.o
string.o thread.o \
  time.o undname.o wcs.o -ladvapi32 -luser32 ../../libs/port/libwine_port.a
-Wb,-dadvapi32 \
  -Wb,-duser32 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
crtdll.wx3SpG.s: Assembler messages:
crtdll.wx3SpG.s:3253: Error: selected processor does not support `vpush
{s0-s15}' in ARM mode
crtdll.wx3SpG.s:3398: Error: selected processor does not support `vpush
{s0-s15}' in ARM mode
--- snip ---

More verbose

--- snip ---
$ cd /home/focht/projects/wine/mainline-build-arm/dlls/crtdll

/home/focht/projects/wine/mainline-build-x86_64/tools/winegcc/winegcc -v -o
crtdll.dll.so  
-B/home/focht/projects/wine/mainline-build-x86_64/tools/winebuild
--sysroot=../.. -b   arm-pokymllib32-linux-gnueabi -marm -mfloat-abi=hard -fPIC
-fasynchronous-unwind-tables -shared  
/home/focht/projects/wine/mainline-src/dlls/crtdll/crtdll.spec console.o cpp.o
ctype.o data.o   dir.o environ.o errno.o except.o except_arm.o except_arm64.o
except_i386.o except_x86_64.o exit.o   file.o heap.o locale.o lock.o main.o
math.o mbcs.o misc.o process.o scanf.o string.o thread.o   time.o undname.o
wcs.o -ladvapi32 -luser32 ../../libs/port/libwine_port.a -Wb,-dadvapi32  
-Wb,-duser32 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
/home/focht/projects/wine/mainline-build-x86_64/tools/winebuild/winebuild -v
--target arm-pokymllib32-linux-gnueabi -munix -fasynchronous-unwind-tables
--cc-cmd=arm-pokymllib32-linux-gnueabi-gcc
--ld-cmd=arm-pokymllib32-linux-gnueabi-ld -D_REENTRANT -fPIC --dll -o
crtdll.dll-3bZX0K.spec.o -E
/home/focht/projects/wine/mainline-src/dlls/crtdll/crtdll.spec -L../../dlls
-L../../libs/wine -marm -mfloat-abi=hard -dadvapi32 -duser32 -- console.o cpp.o
ctype.o data.o dir.o environ.o errno.o except.o except_arm.o except_arm64.o
except_i386.o except_x86_64.o exit.o file.o heap.o locale.o lock.o main.o
math.o mbcs.o misc.o process.o scanf.o string.o thread.o time.o undname.o wcs.o
../../dlls/advapi32/libadvapi32.def ../../dlls/user32/libuser32.def
../../libs/port/libwine_port.a ../../dlls/winecrt0/libwinecrt0.a
../../dlls/kernel32/libkernel32.def ../../dlls/ntdll/libntdll.def 
arm-pokymllib32-linux-gnueabi-gcc -xassembler -c -o crtdll.Ku8jzm.o
crtdll.MKNemL.s
arm-pokymllib32-linux-gnueabi-ld --no-wchar-size-warning -r -o crtdll.I4vdYV.o
crtdll.Ku8jzm.o console.o cpp.o ctype.o data.o dir.o environ.o errno.o except.o
except_arm.o except_arm64.o except_i386.o except_x86_64.o exit.o file.o heap.o
locale.o lock.o main.o math.o mbcs.o misc.o process.o scanf.o string.o thread.o
time.o undname.o wcs.o ../../libs/port/libwine_port.a
../../dlls/winecrt0/libwinecrt0.a
/home/focht/projects/poky/sdk-install/sysroots/x86_64-pokysdk-linux/usr/bin/arm-pokymllib32-linux-gnueabi/arm-pokymllib32-linux-gnueabi-nm
-u crtdll.I4vdYV.o
arm-pokymllib32-linux-gnueabi-gcc -xassembler -c -o crtdll.dll-3bZX0K.spec.o
crtdll.kBlbDz.s
crtdll.kBlbDz.s: Assembler messages:
crtdll.kBlbDz.s:3253: Error: selected processor does not support `vpush
{s0-s15}' in ARM mode
crtdll.kBlbDz.s:3398: Error: selected processor does not support `vpush
{s0-s15}' in ARM mode
...
--- snip ---

NOTE: Workaround for bug 46053 applied prior to pass explicit target sysroot.

Passing 'mfpu=xxx' via CFLAGS won't work here, it doesn't get propagated into
TARGETFLAGS as already mentioned in comment #1

Autogenerated Makefile:

--- snip ---
...
CC = arm-pokymllib32-linux-gnueabi-gcc  -march=armv7-a -mthumb -mfpu=neon-vfpv4
-mfloat-abi=hard
--sysroot=/home/focht/projects/poky/sdk-install/sysroots/aarch64-poky-linux 
CFLAGS = -g -O2 -mfpu=neon -marm -mfloat-abi=hard 
...
EXTRACFLAGS = -Wall -pipe -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 
...
LD = arm-pokymllib32-linux-gnueabi-ld 
--sysroot=/home/focht/projects/poky/sdk-install/sysroots/aarch64-poky-linux 
...
LDFLAGS = -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed 
...
TARGETFLAGS = -b arm-pokymllib32-linux-gnueabi -marm -mfloat-abi=hard 
--- snip ---

With fixes applied:

--- snip ---
...
/home/focht/projects/wine/mainline-build-x86_64/tools/winegcc/winegcc -o
crtdll.dll.so \
  -B/home/focht/projects/wine/mainline-build-x86_64/tools/winebuild
--sysroot=../.. -b \
  arm-pokymllib32-linux-gnueabi -marm -mfloat-abi=hard -mfpu=neon -fPIC
-fasynchronous-unwind-tables \
  -shared /home/focht/projects/wine/mainline-src/dlls/crtdll/crtdll.spec
console.o cpp.o ctype.o \
  data.o dir.o environ.o errno.o except.o except_arm.o except_arm64.o
except_i386.o except_x86_64.o \
  exit.o file.o heap.o locale.o lock.o main.o math.o mbcs.o misc.o process.o
scanf.o string.o \
  thread.o time.o undname.o wcs.o -ladvapi32 -luser32
../../libs/port/libwine_port.a -Wb,-dadvapi32 \
  -Wb,-duser32 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
/home/focht/projects/wine/mainline-build-x86_64/tools/winegcc/winegcc -o
crtdll.dll.fake \
  -B/home/focht/projects/wine/mainline-build-x86_64/tools/winebuild
--sysroot=../.. -b \
  arm-pokymllib32-linux-gnueabi -marm -mfloat-abi=hard -mfpu=neon -fPIC
-fasynchronous-unwind-tables \
  -shared /home/focht/projects/wine/mainline-src/dlls/crtdll/crtdll.spec
console.o cpp.o ctype.o \
  data.o dir.o environ.o errno.o except.o except_arm.o except_arm64.o
except_i386.o except_x86_64.o \
  exit.o file.o heap.o locale.o lock.o main.o math.o mbcs.o misc.o process.o
scanf.o string.o \
  thread.o time.o undname.o wcs.o -ladvapi32 -luser32
../../libs/port/libwine_port.a -Wb,-dadvapi32 \
  -Wb,-duser32 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
make[1]: Leaving directory
'/home/focht/projects/wine/mainline-build-arm/dlls/crtdll' 
...
--- snip ---

$ wine --version
wine-4.12.1

Regards

-- 
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.



More information about the wine-bugs mailing list