problem with __init_cpu_features()

The Source thesourcehim@gmail.com
Thu May 19 07:38:00 GMT 2016


18.05.2016 21:53, Carlos O'Donell пишет:
> On Wed, May 18, 2016 at 10:55 AM, Carlos O'Donell
> <carlos@systemhalted.org> wrote:
>> On Wed, May 18, 2016 at 10:37 AM, The Source <thesourcehim@gmail.com> wrote:
>>> Hello, I'm trying to run my application on Cyrix Cx486SLC based system. But
>>> application (built for i486 as well as glibc) crashes on illegal instruction
>>> inside __init_cpu_features(). As far as I understand this CPU does not
>>> support cpuid (/proc/cpuinfo reports cpuid level -1 and /dev/cpu/0/cpuid can
>>> not be read with i/o error), so that might be the problem. Is there a way to
>>> avoid using __cpuid()? My glibc version is 2.22
>> You must use specific CFLAGS or CC to indicate you are building for a
>> pre-i586 target, that will disable unconditional cpuid usage, and
>> enable the checks required to verify cpuid is usable.
>>
>> If you are cross-compiling from an x86_64 box I would recommend
>> CC="gcc -m32 -march=i486" instead to ensure that regardless of flags
>> you build for i486.
>>
>> Just to check I kicked off a build for i486 locally to see if runs
>> into any problems.
> i486 builds just fine and I verified it calls __get_cpuid_max to check
> for cpuid feature.
>
> Test results look good too.
>
> Cheers,
> Carlos.

Unfortunately, adding those flags to compiler for both libc and 
application did not help. I found out that __init_cpu_features is 
located inside libpthread somehow. So my application crashes when it 
uses threads. Could there be some unwanted optimization inside pthread?



More information about the Libc-help mailing list