Я компилирую проект NDK, используя APP_ABI = armeabi для целевого процессора ARMv5.У меня есть код, который работает с плавающей запятой, и при работе на младшем устройстве HTC Wildfire ARMv6 я вижу, что у меня происходит сбой с SIGILL.
Разборка двоичного файла показывает, что он падает именно здесь
4397a8: ed9f7b18 vldr d7, [pc, #96]
Почему NDK генерирует команду fp, когда я указал APP_ABI = armeabi, не должен ли это быть вызов eabi, а не явно неоновый код?Для устранения неполадок я даже добавил это в файл mk:
LOCAL_CFLAGS := -mfloat-abi=softfp -msoft-float -mfpu=vfp
И все же он генерирует двоичный код выше.Какой параметр я должен указать, чтобы мои инструкции с плавающей точкой действительно генерировали программный код?Или это устройство просто полностью сломано?Вот информация о процессоре:
>adb shell getprop | grep abi
[ro.product.cpu.abi]: [armeabi]
>adb shell cat /proc/cpuinfo
Processor : ARMv6-compatible processor rev 2 (v6l)
BogoMIPS : 244.94
Features : swp half thumb fastmult edsp java
CPU implementer : 0x41
CPU architecture: 6TEJ
CPU variant : 0x1
CPU part : 0xb36
CPU revision : 2
Hardware : buzz
Revision : 0081
Serial : 0000000000000000