Bug #20109
closedsrc/common/crc32c_ppc_asm.s ppc64le build break
0%
Description
It looks like there is a build break on ppc64le architecture associated with a recent change. The error message looks like this ...
[ 51%] ?[32mBuilding ASM object src/CMakeFiles/common-objs.dir/common/crc32c_ppc_asm.s.o?[0m
/home/ubuntu/ceph/kestrels.1/ceph/src/common/crc32c_ppc_asm.s: Assembler messages:
/home/ubuntu/ceph/kestrels.1/ceph/src/common/crc32c_ppc_asm.s:84: Error: unrecognized opcode: `func_start(__crc32_vpmsum)'
/home/ubuntu/ceph/kestrels.1/ceph/src/common/crc32c_ppc_asm.s:127: Error: unrecognized opcode: `mtvrd(v8,'
/home/ubuntu/ceph/kestrels.1/ceph/src/common/crc32c_ppc_asm.s:200: Error: unrecognized opcode: `vperm(v16,v16,v16,byteswap)'
/home/ubuntu/ceph/kestrels.1/ceph/src/common/crc32c_ppc_asm.s:201: Error: unrecognized opcode: `vperm(v17,v17,v17,byteswap)'
This occurs because someone renamed the file src/common/crc32c_ppc_asm.S to .s and now gcc doesn't accept that as an assembly file.
git log --follow -p crc32c_ppc_asm.s | pg
commit e1c3985148869c55b3725e208ec3bc5acf5fceae
Author: Bassam Tabbara <bassam.tabbara@quantum.com>
Date: Wed May 17 17:41:16 2017 -0700
cmake: workaound ccache issue with .S assembly files
when building with -DWITH_CCACHE=ON recent versions of ccache
(for example 3.3.3) seem to mangle object files from the cache
for source files that have a .S extension. This seems similar
but unrelated to PR #14633. The workaround here is to rename .S
files to .s (lower case).
Signed-off-by: Bassam Tabbara <bassam.tabbara@quantum.com>
Here is the url for the merge of the above commit:
https://github.com/ceph/ceph/commit/e1c3985148869c55b3725e208ec3bc5acf5fceae
Here is the url for the pull request of the above commit:
https://github.com/ceph/ceph/pull/15142
Updated by Andrew Solomon almost 7 years ago
I believe the original issue was specific to intel / yasm and had nothing to do with ppc64le. The ppc64le assembly file was simply changed to maintain symmetry (ie a cosmetic reason, not a functional one).
I'm currently testing the fix, which would be to rename src/common/crc32c_ppc_asm.s to .S (and change the corresponding name in src/CMakeLists.txt).
Updated by Nathan Cutler almost 7 years ago
- Is duplicate of Bug #20106: Rename of assembler source code file from .S to .s breaks ppc64le build added
Updated by Nathan Cutler almost 7 years ago
Hi. I'm working on this issue, too - see #20106
So far I have determined that merely renaming crc32_ppc_asm.s to crc32_ppc_asm.sx does not fix the issue. The build still fails, though in a different way.
Completely reverting PR#15142 does fix the issue. I'm still not sure why, though.
Updated by Nathan Cutler almost 7 years ago
master PR: https://github.com/ceph/ceph/pull/15373