libtool: compile: g++ -DHAVE_CONFIG_H -I. -D_FORTIFY_SOURCE=2 -mcrc32 -msse2 -DCRCUTIL_USE_ASM=0 -DCRCUTIL_USE_MM_CRC32=1 -Wall -msse2 -Icode -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -c code/multiword_128_64_gcc_amd64_sse2.cc -fPIE -o code/multiword_128_64_gcc_amd64_sse2.o >/dev/null 2>&1
code/crc32c_sse4.cc: In static member function 'static bool crcutil::Crc32cSSE4::IsSSE42Available()':
code/crc32c_sse4.cc:331:4: error: PIC register clobbered by '%ebx' in 'asm'
);
^
Makefile:685: recipe for target 'code/crc32c_sse4.lo' failed
It seems to be because someone neglected to use "#include <cpuid.h>" as
commented in "code/crc32c_sse4.cc":
> // Not using "cpuid.h" intentionally: it is missing from too many
installations.
However "cpuid.h" is part of GCC since 4.4 (or earlier) hence it should be
universally available. Please consider using "cpuid.h" instead of custom
workaround(s) to avoid that kind of problems.
I prepared the attached patch that seems to fix the problem (tests are passing)
but I'm far from being confident in inline asm so my patch needs review from
someone who really understands how it should work.
Original issue reported on code.google.com by only...@gmail.com on 8 Dec 2014 at 4:24
libtool: compile: g++ -DHAVE_CONFIG_H -I. -D_FORTIFY_SOURCE=2 -mcrc32 -msse2 -DCRCUTIL_USE_ASM=0 -DCRCUTIL_USE_MM_CRC32=1 -Wall -msse2 -Icode -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -c code/multiword_128_64_gcc_amd64_sse2.cc -fPIE -o code/multiword_128_64_gcc_amd64_sse2.o >/dev/null 2>&1 code/crc32c_sse4.cc: In static member function 'static bool crcutil::Crc32cSSE4::IsSSE42Available()': code/crc32c_sse4.cc:331:4: error: PIC register clobbered by '%ebx' in 'asm' ); ^ Makefile:685: recipe for target 'code/crc32c_sse4.lo' failed
Original issue reported on code.google.com by
only...@gmail.com
on 8 Dec 2014 at 4:24Attachments: