[Arm-dev] Tracking Down "Illegal instruction" Sources

Sun Jul 14 14:55:59 UTC 2019
Gordan Bobic <gordan at redsleeve.org>

I'm trying to track down the executables/libraries that are behind the
"Illegal instruction" errors I am seeing on my Tegra 2 devices. It seems a
given that this is due to some packages from the GL stack (Mesa, libglvnd,
etc.) having been build with assumptions of NEON always being present, but
I'm trying to figure out a way to determine this definitively.

I have tried the approach along the lines of:

objdump -Ds $file | grep -E 'vadd\.|vmul\.'

since vadd and vmul are both NEON assembly instructions, but this seems to
flag up nearly everything, most of which is in fact working (e.g. Firefox
52.x).

So either my approach is wrong or there are many binaries that do some kind
of runtime detection and selectively use NEON if supported by the hardware.

The reason i am looking into this is because gdm doesn't work without
working GL (even software mesa GL). It works on my Chromebook without
hardware accelerated drivers, but doesn't work on my Tegra laptop without
accelerated drivers. On the Chromebook (Exynos) glxgears runs (albeit
slowly), but on Tegra, it crashes with "Illegal instruction".

I tried rebuilding libglvnd and mesa on the local machine in a hope that
NEON capability is auto-detected but that doesn't seem to have made any
difference.

Any advice/suggestions/insights gratefully received.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.centos.org/pipermail/arm-dev/attachments/20190714/372d0d64/attachment-0005.html>