Сборка AOSP9.0 не удалась для SIGILL на hiddenapi - PullRequest
1 голос
/ 26 марта 2019

Окружающая среда:

Win7 x 64 host + Ubuntu14.04 x64 VM на рабочей станции VMWare 12

источник - AOSP 9.0.0_r30

ошибка сборки:

xargs:

/ OpenSource / Сложение / Android-9.0.0_r30 / SRC-9.0.0_r30 / хост / Linux-x86 / bin / hiddenapi:

завершается сигналом 4

1 Ответ

1 голос
/ 26 марта 2019

Правильный ответ здесь: 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 влияет только на исполняемый файл хоста, вероятность невелика.

...