AOSP9.0构建在hiddenapi上针对SIGILL失败

时间:2019-03-26 02:08:22

标签: build android-source

环境是:

Win7 x 64主机+ VMWare Workstation 12上的Ubuntu14.04 x64 VM

源是AOSP 9.0.0_r30

构建错误是:

  

xargs:

     

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

     

被信号4终止

1 个答案:

答案 0 :(得分:0)

正确的答案在这里: https://github.com/sonyxperiadev/bug_tracker/issues/207

原因是我的构建主机CPU(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指令...

删除上面的cflag后,源代码将成功构建。但是现在尚不清楚是否会产生任何错误,尽管由于cflags似乎仅影响主机可执行文件,所以机会很小。