https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81218
Bug ID: 81218 Summary: libgcc_s.so.1 call to __get_cpuid does not correctly code around 486 cpus lacking cpuid instruction Product: gcc Version: 5.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libgcc Assignee: unassigned at gcc dot gnu.org Reporter: tedheadster at gmail dot com Target Milestone: --- Programs calling libgcc_s.so.1 are failing with an "illegal instruction" signal on old i486 processors that do not support the cpuid instruction. Later i486 had the instruction, but earlier ones lacked it. The code looks like it attempts to detect support for the instruction, but it is not working. Below is a backtrace (with only partial symbols available): (gdb) bt #0 0xb74b5142 in __get_cpuid (__edx=0xbfe5fd18, __ecx=0xbfe5fd14, __ebx=0xbfe5fd10, __eax=0xbfe5fd0c, __level=0) at /var/tmp/portage/sys-devel/gcc-5.4.0-r3/work/build/gcc/include/cpuid.h:2\ 42 #1 __get_cpuid_output (__level=__level@entry=0, __eax=__eax@entry=0xbfe5fd0c, __ebx=__ebx@entry=0xbfe5fd10, __ecx=0xbfe5fd14, __edx=0xbfe5fd18) at /var/tmp/portage/sys-devel/gcc-5.4.0-r3/work/gcc-5.4.0/libgcc/config/i38\ 6/cpuinfo.c:337 #2 0xb74b51ba in __cpu_indicator_init () at /var/tmp/portage/sys-devel/gcc-5.4.0-r3/work/gcc-5.4.0/libgcc/config/i38\ 6/cpuinfo.c:362 #3 0xb77385b6 in ?? () from /lib/ld-linux.so.2 #4 0xb77386dd in ?? () from /lib/ld-linux.so.2 #5 0xb77289cf in ?? () from /lib/ld-linux.so.2 (gdb) I can move the hard drive between an i486DX/75 and an x86_64 machine. It fails on the i486 and succeeds on the x86_64 machine.