3 votes

Échec de la construction d'AOSP9.0 pour SIGILL sur hiddenapi

L'environnement est :

Win7 x 64 host + Ubuntu14.04 x64 VM sur VMWare Workstation 12

La source est AOSP 9.0.0_r30

l'erreur de construction est :

xargs :

/OpenSource/Build/Android-9.0.0_r30/src-9.0.0_r30/host/linux-x86/bin/hiddenapi :

terminé par le signal 4

3voto

jw_ Points 1157

La bonne réponse est ici : https://github.com/sonyxperiadev/bug_tracker/issues/207

La raison en est que mon processeur hôte (Q6600) ne supporte pas l'instruction SSE4.

L'art du projet nécessite le SSE4 car en

art\build\Android.bp

il y a ces cflags :

        "-msse4.2",
        "-mpopcnt",

et le sous-projet

art\tools\hiddenapi

héritent de ces cflags et donc l'exécutable hôte de sortie "hiddenapi" contiendra des instructions SSE4 et déclenchera SIGILL pendant la construction.

selon la fin de cette page https://superuser.com/questions/726395/how-to-check-if-a-binary-requires-sse4-or-avx-on-linux Vous pouvez le vérifier auprès de

objdump -d /OpenSource/Build/Android-9.0.0_r30/src-9.0.0_r30/host/linux-x86/bin/hiddenapi> ~/hiddenapi.asm

note:mon OUT_DIR_COMMON_BASE est réglé sur

/OpenSource/Build/Android-9.0.0_r30/

puis

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

vous verrez qu'il contient une instruction SSE4...

Après avoir supprimé les cflags ci-dessus, la source sera compilée avec succès. Mais on ne sait pas encore si cela produira un bogue, bien que puisque les cflags semblent n'affecter que l'exécutable hôte, le risque est faible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X