Неверная инструкция при компиляции Boot.Context на armeabi-v7a - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь использовать 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...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...