Bug#758964: gcc-4.9 assembler errors when building md5 code from fbb on arm64
Control: severity -1 serious
Control: tag -1 +patch
On Sat, Aug 23, 2014 at 10:54:54AM +0100, peter green wrote:
>Package: gcc-4.9
>Version: 4.9.1-7
>x-debbugs-cc: fbb@packages.debian.org
>Control:| affects -1 fbb|
>
>While building the latest version of fbb (the previous version built
>successfully) for arm64 the autobuilders (both on debian-ports and
>debian official) ran into the following error. They were using
>gcc-4.9 version 4.9.1-7
>
>gcc -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wall -Wstrict-prototypes -O2 -g -funsigned-char -D__LINUX__ -DPROTOTYPES -I../include -DUSE_NCURSES -D_FORTIFY_SOURCE=2 -c -o md5c.o md5c.c
>/tmp/ccrwJ404.s: Assembler messages:
>/tmp/ccrwJ404.s:609: Error: operand 1 should be an integer register -- `ldr v12,[x1]'
>/tmp/ccrwJ404.s:610: Error: invalid use of vector register at operand 1 -- `eor v12,x6,v12'
><builtin>: recipe for target 'md5c.o' failed
>
>I was able to reproducte this locally (under user mode qemu) with
>4.9.1-8 and have prepared a reduced (though unfortunately stil fairly
>large) testcase.
>
>root@debian:/# gcc -g -fstack-protector-strong -O2 -c -o test.o test.c
>/tmp/ccap2vnU.s: Assembler messages:
>/tmp/ccap2vnU.s:421: Error: operand 1 should be an integer register
>-- `ldr v7,[x0]'
>/tmp/ccap2vnU.s:422: Error: invalid use of vector register at operand
>1 -- `eor v7,x8,v7'
>root@debian:/#
>
>It seems this bug can be worked around by adding
>-fno-inline-small-functions and -fno-inline-functions-called-once
>(note: the first of these is sufficient with the reduced testcase
>where I removed static to make reduction work easier, both are needed
>with the original code) or removing -fstack-protector-strong
It's the stack-protector thing that's key here. This bug is showing up
in a number of other packages too right now, and has been diagnosed
upstream with a patch available for testing:
https://gcc.gnu.org/ml/gcc-patches/2014-09/msg00320.html
So I'm tagging this appropriately.
Other packages affected are (at least):
alpine einspline fbb jigit uw-imap vdmfec vxl yasm
and yasm is quite critical as a build-dep. Matthias: would you like me
to do some testing with that patch as well, or are you already on top
of this?
--
Steve McIntyre, Cambridge, UK. steve@einval.com
< Aardvark> I dislike C++ to start with. C++11 just seems to be
handing rope-creating factories for users to hang multiple
instances of themselves.
Reply to: