Я пытаюсь использовать Boost.Coroutine2
на Android, но я сталкиваюсь с некоторыми трудностями.
Компиляция Boost.Context
из репозиториев Hunter завершается неудачно со следующими ошибками «Недопустимая инструкция» при использовании NDKr18 (r19-beta1 вообще не работает из-за отсутствующего заголовка cstddef
, вызванного фиктивным --sysroot
значением).
- Я нацеливаюсь
armeabi-v7a
- Я использую следующие параметры bjam:
abi=aapcs
architecture=arm
binary-format=elf
- Таргетирование
arm64-v8a
вместо этого, кажется, работает, но указатель стека, кажется, как-то испорчен, потому что он в некоторых ситуациях происходит сбой сразу послевозвращение из функции, которая вызывает реализацию asm (не происходит в других системах).Я не смог определить, какая инструкция недействительна.
Есть идеи, почему набор команд не распознается?
gcc.compile.asm bin.v2/libs/context/build/gcc-ndk/debug/abi-aapcs/address-model-64/link-static/target-os-android/threading-multi/asm/make_arm64_aapcs_elf_gas.o
libs/context/src/asm/make_arm64_aapcs_elf_gas.S:60:5: error: invalid instruction
and x0, x0, ~0xF
^
libs/context/src/asm/make_arm64_aapcs_elf_gas.S:63:5: error: invalid instruction
sub x0, x0, #0xb0
^
libs/context/src/asm/make_arm64_aapcs_elf_gas.S:67:14: error: register expected
str x2, [x0, #0xa0]
^
libs/context/src/asm/make_arm64_aapcs_elf_gas.S:71:9: error: operand must be a register in range [r0, r15]
adr x1, finish
^
libs/context/src/asm/make_arm64_aapcs_elf_gas.S:72:14: error: register expected
str x1, [x0, #0x98]
^
libs/context/src/asm/make_arm64_aapcs_elf_gas.S:74:5: error: invalid instruction, did you mean: rev?
ret x30
^
libs/context/src/asm/make_arm64_aapcs_elf_gas.S:78:9: error: operand must be a register in range [r0, r15]
mov x0, #0
^
"/home/arcanis/android-ndk-r18-beta2/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++" "-isystem" "/home/arcanis/android-ndk-r18b/sysroot/usr/include/arm-linux-androideabi" "-g" "-DANDROID" "-ffunction-sections" "-funwind-tables" "-fstack-protector-strong" "-no-cano
nical-prefixes" "-march=armv7-a" "-mfloat-abi=softfp" "-mfpu=vfpv3-d16" "-mthumb" "-Wa,--noexecstack" "-Wformat" "-Werror=format-security" "-std=c++11" "--sysroot=/home/arcanis/android-ndk-r18b/sysroot" "-isystem" "/home/arcanis/android-ndk-r18b/sources/cxx-stl/llvm-libc
++/include" "-isystem" "/home/arcanis/android-ndk-r18b/sources/android/support/include" "-isystem" "/home/arcanis/android-ndk-r18b/sources/cxx-stl/llvm-libc++abi/include" "-std=gnu++17" "--target=armv7-none-linux-androideabi16" "--gcc-toolchain=/home/arcanis/android-ndk-
r18b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64" "-fPIC" -x assembler-with-cpp -O0 -fno-inline -Wall -g -DBOOST_ALL_NO_LIB=1 -DBOOST_CONTEXT_SOURCE -I"." -c -o "bin.v2/libs/context/build/gcc-ndk/debug/abi-aapcs/address-model-64/link-static/target-os-andr
oid/threading-multi/asm/make_arm64_aapcs_elf_gas.o" "libs/context/src/asm/make_arm64_aapcs_elf_gas.S"
...failed gcc.compile.asm bin.v2/libs/context/build/gcc-ndk/debug/abi-aapcs/address-model-64/link-static/target-os-android/threading-multi/asm/make_arm64_aapcs_elf_gas.o...