Open 892768447 opened 2 years ago
and I try define TURF_PREFER_CPP11 and remove atomic_gcc_arm.c
, it's build and test ok.
but I don't know if there are other problems.
set(DTURF_PREFER_CPP11 TRUE)
if (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64") add_definitions(-Darm64) add_definitions(-DARM64_ARCH_8) endif()
Just a guess, but your compiler might be invoking the wrong assembler. What's the output from this command?
> /usr/bin/aarch64-linux-gnu-gcc -x c++ - -Wa,--version < /dev/null
GNU assembler (GNU Binutils for Ubuntu) 2.26.1 Copyright (C) 2015 Free Software Foundation, Inc.
source /opt/rh/devtoolset-8/enable
GNU assembler version 2.30-55.el7.2 Copyright (C) 2018 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License version 3 or later. This program has absolutely no warranty. This assembler was configured for a target of `aarch64-redhat-linux'. /tmp/ccnomEom.o: file not recognized: File truncated collect2: error: ld returned 1 exit status
Maybe this is a custom CPU
Architecture: aarch64 Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Socket(s): 2 Model name: Phytium,FT-2000/4 CPU max MHz: 2600.0000 CPU min MHz: 1900.0000 BogoMIPS: 3456.00 Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32
#elif defined(__arm64__) || defined(__aarch64__ )
#if defined(__ARM64_ARCH_8__) || defined(__ARM_ARCH_8A) || defined(__ARM_ARCH)
TURF_CPU_ARM || TURF_CPU_ARM64 ||
add_definitions(-DTURF_COMPILER_GCC) add_definitions(-DTURF_CPU_ARM)
Using built-in specs. COLLECT_GCC=/usr/bin/aarch64-linux-gnu-gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/5/lto-wrapper Target: aarch64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 5.4.0-6kord1~16.04.12' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-arm64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-arm64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-arm64 --with-arch-directory=aarch64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu Thread model: posix gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6kord1~16.04.12)
[main] Building folder: junction-sample [build] Starting build [proc] Executing command: /usr/bin/cmake --build /tmp/junction-sample/build --config Debug --target all -j 6 -- [build] Consolidate compiler generated dependencies of target turf [build] Consolidate compiler generated dependencies of target junction [build] [ 3%] Building CXX object junction/turf/CMakeFiles/turf.dir/turf/UTCTime.cpp.o [build] [ 7%] Building CXX object junction/turf/CMakeFiles/turf.dir/turf/Heap.cpp.o [build] [ 14%] Building CXX object junction/turf/CMakeFiles/turf.dir/turf/Core.cpp.o [build] [ 14%] Building C object junction/turf/CMakeFiles/turf.dir/turf/c/impl/atomic_gcc_arm.c.o [build] [ 21%] Building CXX object junction/CMakeFiles/junction.dir/junction/ConcurrentMap_Grampa.cpp.o [build] [ 21%] Building CXX object junction/turf/CMakeFiles/turf.dir/turf/extra/Options.cpp.o [build] /tmp/ccXshPqk.s: Assembler messages: [build] /tmp/ccXshPqk.s:11: 错误:operand 1 should be an integer register --
mov r2,r0' [build] /tmp/ccXshPqk.s:13: 错误:unknown mnemonic
ldrexd' --ldrexd r0,r1,[r2]' [build] /tmp/ccXshPqk.s:14: 错误:unknown mnemonic
strexd' --strexd r3,r0,r1,[r2]' [build] /tmp/ccXshPqk.s:15: 错误:operand 1 should be an integer or stack pointer register --
cmp r3,#0' [build] /tmp/ccXshPqk.s:17: 错误:unknown mnemonicbx' --
bx lr' [build] /tmp/ccXshPqk.s:23: 错误:unknown mnemonicpush' --
push {r4-r5}' [build] /tmp/ccXshPqk.s:24: 错误:operand 1 should be an integer register --mov r5,r0' [build] /tmp/ccXshPqk.s:25: 错误:operand 1 should be an integer register --
mov r3,r2' [build] /tmp/ccXshPqk.s:26: 错误:operand 1 should be an integer register --mov r2,r1' [build] /tmp/ccXshPqk.s:28: 错误:unknown mnemonic
ldrexd' --ldrexd r0,r1,[r5]' [build] /tmp/ccXshPqk.s:29: 错误:unknown mnemonic
strexd' --strexd r4,r2,r3,[r5]' [build] /tmp/ccXshPqk.s:30: 错误:operand 1 should be an integer or stack pointer register --
cmp r4,#0' [build] /tmp/ccXshPqk.s:32: 错误:unknown mnemonicpop' --
pop {r4-r5}' [build] /tmp/ccXshPqk.s:33: 错误:unknown mnemonicbx' --
bx lr' [build] /tmp/ccXshPqk.s:39: 错误:unknown mnemonicpush' --
push {r4-r7}' [build] /tmp/ccXshPqk.s:40: 错误:operand 1 should be an integer register --mov r6,r3' [build] /tmp/ccXshPqk.s:41: 错误:operand 1 should be an integer register --
ldr r7,[sp,#16]' [build] /tmp/ccXshPqk.s:42: 错误:operand 1 should be an integer register --mov r5,r0' [build] /tmp/ccXshPqk.s:43: 错误:operand 1 should be an integer register --
mov r4,r1' [build] /tmp/ccXshPqk.s:45: 错误:unknown mnemonicldrexd' --
ldrexd r0,r1,[r5]' [build] /tmp/ccXshPqk.s:46: 错误:operand 1 should be an integer or stack pointer register --cmp r0,r4' [build] /tmp/ccXshPqk.s:47: 错误:unknown mnemonic
cmpeq' --cmpeq r1,r2' [build] /tmp/ccXshPqk.s:49: 错误:unknown mnemonic
strexd' --strexd r3,r6,r7,[r5]' [build] /tmp/ccXshPqk.s:50: 错误:operand 1 should be an integer or stack pointer register --
cmp r3,#0' [build] /tmp/ccXshPqk.s:53: 错误:unknown mnemonicpop' --
pop {r4-r7}' [build] /tmp/ccXshPqk.s:54: 错误:unknown mnemonicbx' --
bx lr' [build] /tmp/ccXshPqk.s:60: 错误:unknown mnemonicpush' --
push {r4-r7}' [build] /tmp/ccXshPqk.s:61: 错误:operand 1 should be an integer register --mov r6,r3' [build] /tmp/ccXshPqk.s:62: 错误:operand 1 should be an integer register --
ldr r7,[sp,#16]' [build] /tmp/ccXshPqk.s:63: 错误:operand 1 should be an integer register --mov r5,r0' [build] /tmp/ccXshPqk.s:64: 错误:operand 1 should be an integer register --
mov r4,r1' [build] /tmp/ccXshPqk.s:66: 错误:unknown mnemonicldrexd' --
ldrexd r0,r1,[r5]' [build] /tmp/ccXshPqk.s:67: 错误:operand 1 should be an integer or stack pointer register --cmp r0,r4' [build] /tmp/ccXshPqk.s:68: 错误:unknown mnemonic
cmpeq' --cmpeq r1,r2' [build] /tmp/ccXshPqk.s:70: 错误:unknown mnemonic
strexd' --strexd r3,r6,r7,[r5]' [build] /tmp/ccXshPqk.s:71: 错误:operand 1 should be an integer or stack pointer register --
cmp r3,#0' [build] /tmp/ccXshPqk.s:74: 错误:unknown mnemonicpop' --
pop {r4-r7}' [build] /tmp/ccXshPqk.s:75: 错误:unknown mnemonicbx' --
bx lr' [build] /tmp/ccXshPqk.s:81: 错误:unknown mnemonicpush' --
push {r4-r7}' [build] /tmp/ccXshPqk.s:82: 错误:operand 1 should be an integer register --mov r5,r0' [build] /tmp/ccXshPqk.s:83: 错误:operand 1 should be an integer register --
mov r4,r1' [build] /tmp/ccXshPqk.s:85: 错误:unknown mnemonicldrexd' --
ldrexd r0,r1,[r5]' [build] /tmp/ccXshPqk.s:86: 错误:operand 1 should be an integer register --adds r6,r0,r4' [build] /tmp/ccXshPqk.s:87: 错误:operand 1 should be an integer register --
adc r7,r1,r2' [build] /tmp/ccXshPqk.s:88: 错误:unknown mnemonicstrexd' --
strexd r3,r6,r7,[r5]' [build] /tmp/ccXshPqk.s:89: 错误:operand 1 should be an integer or stack pointer register --cmp r3,#0' [build] /tmp/ccXshPqk.s:91: 错误:unknown mnemonic
pop' --pop {r4-r7}' [build] /tmp/ccXshPqk.s:92: 错误:unknown mnemonic
bx' --bx lr' [build] /tmp/ccXshPqk.s:98: 错误:unknown mnemonic
push' --push {r4-r7}' [build] /tmp/ccXshPqk.s:99: 错误:operand 1 should be an integer register --
mov r5,r0' [build] /tmp/ccXshPqk.s:100: 错误:operand 1 should be an integer register --mov r4,r1' [build] /tmp/ccXshPqk.s:102: 错误:unknown mnemonic
ldrexd' --ldrexd r0,r1,[r5]' [build] /tmp/ccXshPqk.s:103: 错误:operand 1 should be an integer or stack pointer register --
and r6,r0,r4' [build] /tmp/ccXshPqk.s:104: 错误:operand 1 should be an integer or stack pointer register --and r7,r1,r2' [build] /tmp/ccXshPqk.s:105: 错误:unknown mnemonic
strexd' --strexd r3,r6,r7,[r5]' [build] /tmp/ccXshPqk.s:106: 错误:operand 1 should be an integer or stack pointer register --
cmp r3,#0' [build] /tmp/ccXshPqk.s:108: 错误:unknown mnemonicpop' --
pop {r4-r7}' [build] /tmp/ccXshPqk.s:109: 错误:unknown mnemonicbx' --
bx lr' [build] /tmp/ccXshPqk.s:115: 错误:unknown mnemonicpush' --
push {r4-r7}' [build] /tmp/ccXshPqk.s:116: 错误:operand 1 should be an integer register --mov r5,r0' [build] /tmp/ccXshPqk.s:117: 错误:operand 1 should be an integer register --
mov r4,r1' [build] /tmp/ccXshPqk.s:119: 错误:unknown mnemonicldrexd' --
ldrexd r0,r1,[r5]' [build] /tmp/ccXshPqk.s:120: 错误:operand 1 should be a SIMD vector register --orr r6,r0,r4' [build] /tmp/ccXshPqk.s:121: 错误:operand 1 should be a SIMD vector register --
orr r7,r1,r2' [build] /tmp/ccXshPqk.s:122: 错误:unknown mnemonicstrexd' --
strexd r3,r6,r7,[r5]' [build] /tmp/ccXshPqk.s:123: 错误:operand 1 should be an integer or stack pointer register --cmp r3,#0' [build] /tmp/ccXshPqk.s:125: 错误:unknown mnemonic
pop' --pop {r4-r7}' [build] /tmp/ccXshPqk.s:126: 错误:unknown mnemonic
bx' --bx lr' [build] make[2]: *** [junction/turf/CMakeFiles/turf.dir/turf/c/impl/atomic_gcc_arm.c.o] Error 1 [build] make[2]: *** 正在等待未完成的任务.... [build] [ 25%] Building CXX object junction/turf/CMakeFiles/turf.dir/turf/extra/Random.cpp.o [build] junction/turf/CMakeFiles/turf.dir/build.make:117: recipe for target 'junction/turf/CMakeFiles/turf.dir/turf/c/impl/atomic_gcc_arm.c.o' failed [build] [ 28%] Building CXX object junction/CMakeFiles/junction.dir/junction/ConcurrentMap_Leapfrog.cpp.o [build] [ 32%] Building CXX object junction/CMakeFiles/junction.dir/junction/QSBR.cpp.o [build] [ 35%] Building CXX object junction/CMakeFiles/junction.dir/junction/ConcurrentMap_Linear.cpp.o [build] [ 39%] Building CXX object junction/CMakeFiles/junction.dir/junction/details/Grampa.cpp.o [build] [ 42%] Building CXX object junction/CMakeFiles/junction.dir/junction/details/Leapfrog.cpp.o [build] [ 46%] Building CXX object junction/CMakeFiles/junction.dir/junction/details/Linear.cpp.o [build] [ 50%] Building CXX object junction/CMakeFiles/junction.dir/junction/extra/MemHook_NBDS.cpp.o [build] [ 53%] Building CXX object junction/CMakeFiles/junction.dir/junction/extra/MemHook_TBB.cpp.o [build] [ 57%] Building CXX object junction/CMakeFiles/junction.dir/junction/striped/ConditionBank.cpp.o [build] /tmp/cciSrMa7.s: Assembler messages: [build] /tmp/cciSrMa7.s:47: 错误:unknown mnemonic
ldrex' --ldrex x4,[x0]' [build] /tmp/cciSrMa7.s:50: 错误:unknown mnemonic
strex' -- `strex x6,x2,[x0]' [build] junction/CMakeFiles/junction.dir/build.make:201: recipe for target 'junction/CMakeFiles/junction.dir/junction/striped/ConditionBank.cpp.o' failed [build] CMakeFiles/Makefile2:143: recipe for target 'junction/CMakeFiles/junction.dir/all' failed [build] make[2]: [junction/CMakeFiles/junction.dir/junction/striped/ConditionBank.cpp.o] Error 1 [build] make[1]: [junction/CMakeFiles/junction.dir/all] Error 2 [build] make[1]: 正在等待未完成的任务.... [build] CMakeFiles/Makefile2:169: recipe for target 'junction/turf/CMakeFiles/turf.dir/all' failed [build] Makefile:90: recipe for target 'all' failed [build] make[1]: [junction/turf/CMakeFiles/turf.dir/all] Error 2 [build] make: *** [all] Error 2 [proc] The command: /usr/bin/cmake --build /tmp/junction-sample/build --config Debug --target all -j 6 -- exited with code: 2 and signal: null [build] Build finished with exit code 2