Неправильно определяются возможности процессора, в частности поддержка 3DNow!, что приводит к падениям по SIGILL на других процессорах. В libSDL есть функция Hermes_X86_CPU(), возвращающая значение регистра EDX после выполнения команды cpuid с EAX=1, наличие 3DNow! подразумевается, если установлен старший бит (0x80000000). Однако это не так. Поддержка 3DNow! определяется проверкой старшего бита (0x80000000) в EDX после выполнения команды cpuid с EAX=0x80000001 на процессорах, поддерживающих это.
По-хорошему, для целей дистрибутива нужно вообще выкинуть эти самописные определения из libSDL и использовать то, что возвращает ядро в /proc/cpu. Да, этот патч будет не принят в libSDL, но ядро у нас гарантированно более корректно определяет возможности процессора, чем libSDL.
да. Более того - у меня есть код (C/C++), который корректно определяет поддержку MMX/SSE в CPU. Можно его вытащить в библиотечку и слинковать с libSDL. а можно это делать и через proc. В общем - займусь на следующей неделе... может быть раньше.
Created attachment 318 [details] "Заплатка" для корректного определения capabilities (works for me, как говорится)
fixed (SDL-1.2.6-alt3) патч сработал и проверен. Просьба проверить на машинах с AMD процессором ;-)