[Pixman] [PATCH] Check for NEON using a signal handler to catch SIGILL

Mike McCormack mj.mccormack at samsung.com
Thu Dec 9 16:47:30 PST 2010


On 12/10/2010 01:19 AM, Aaron Plattner wrote:
> On Thu, Dec 09, 2010 at 04:36:15AM -0800, Mike McCormack wrote:
>> I have run into a problem with pixman's CPU detection code under QEMU ARM.
>>
>> When trying to run an executable linked with pixman under QEMU, I get a crash like this:
>>
>> 21553 open("/proc/self/auxv",O_RDONLY) = 3
>> ...
>> 21553 read(3,0x7ffdb0,8) = 8
>> qemu: uncaught target signal 11 (Segmentation fault) - core dumped
>> Exit reason and status: signal 11
>>
>> /proc/self/auxv is from the host x86 kernel, not an ARM kernel, as pixman expects.
>> Parsing /proc/self/auxv will only work on Linux with proc mounted, and not under QEMU.
>
> Doesn't this indicate a bug in QEMU, rather than something that needs to be
> fixed in the emulated environment?

Though you could say it's a bug in QEMU, I think it's beyond the scope of qemu-user to
translate the files in the /proc filesystem.

There are other good reasons to fix this in pixman:

* /proc/self/auxv is linux specific (probably won't work on *BSD/ARM)
* /proc may not be mounted
* consistency with other CPU detection functions in pixman. e.g.
   pixman_have_vmx() in pixman/pixman-cpu.c already uses a SIGILL to detect vmx.

Is there any drawbacks to using a SIGILL over scanning /proc?

thanks,

Mike



More information about the Pixman mailing list