Правильный ответ здесь: https://github.com/sonyxperiadev/bug_tracker/issues/207
Причина в том, что мой центральный процессор сборки (Q6600) не поддерживает инструкцию SSE4.
Для проекта требуется SSE4, потому что в
art\build\Android.bp
есть эти флаги:
"-msse4.2",
"-mpopcnt",
и подпроект
art\tools\hiddenapi
наследуют эти флаги и поэтому исполняемый файл узла "hiddenapi" будет содержать SSE4Инструкция и запуск SIGILL во время сборки.
в соответствии с концом этой страницы: https://superuser.com/questions/726395/how-to-check-if-a-binary-requires-sse4-or-avx-on-linux, вы можете проверить это с помощью:
objdump -d /OpenSource/Build/Android-9.0.0_r30/src-9.0.0_r30/host/linux-x86/bin/hiddenapi> ~/hiddenapi.asm
примечание: мой OUT_DIR_COMMON_BASE установлен в
/OpenSource/Build/Android-9.0.0_r30/
затем
gawk '/\<(mpsadbw|phminposuw|pmulld|pmuldq|dpps|dppd|blendps|blendpd|blendvps|blendvpd|pblendvb|pblenddw|pminsb|pmaxsb|pminuw|pmaxuw|pminud|pmaxud|pminsd|pmaxsd|roundps|roundss|roundpd|roundsd|insertps|pinsrb|pinsrd|pinsrq|extractps|pextrb|pextrd|pextrw|pextrq|pmovsxbw|pmovzxbw|pmovsxbd|pmovzxbd|pmovsxbq|pmovzxbq|pmovsxwd|pmovzxwd|pmovsxwq|pmovzxwq|pmovsxdq|pmovzxdq|ptest|pcmpeqq|pcmpgtq|packusdw|pcmpestri|pcmpestrm|pcmpistri|pcmpistrm|crc32|popcnt|movntdqa|extrq|insertq|movntsd|movntss|lzcnt)\>/' ~/hiddenapi.asm
, тогда вы увидите, что он содержит одну инструкцию SSE4 ...
После удаления вышеуказанных флагов c источник будет успешно собран. Нобудет ли это вызывать какую-либо ошибку, неизвестно сейчас, хотя, поскольку кажется, что cflags влияет только на исполняемый файл хоста, вероятность невелика.