gcc7 no puede compilar el tipo flotante después de cambiar el hardware de ubuntu 18.04 (incluye CPU y placa base), incluso si reinstalo gcc7 y compila paquetes esenciales, etc. La compilación cruzada como arm-linux-gnueabihf-gcc también falló. pero clang funciona bien en ese momento.
Antes:
CPU: i7-8700k,
Nombre en clave: Coffee Lake
Placa base: ASUS prime z370A https://www.asus.com/Motherboards-Components/Motherboards/PRIME/PRIME-Z370-A/
Después:
CPU: i7-4770K
Nombre en clave: haswell
Placa base: ASUS Z87-DELUXE https://www.asus.com/SupportOnly/Z87DELUXE/HelpDesk_Manual/
más detalles :
gato ac
int main() { float a=10000.0; return a/111; }gcc -c ca
ac: In function 'main': ac:29:5: internal compiler error: Illegal instruction float a=10000.0; ^~~~~Intento depurarlo:
>gcc -O0 -c ac -wrapper gdb,--args GNU gdb (Ubuntu 8.1.1-0ubuntu1) 8.1.1 ... Reading symbols from /usr/lib/gcc/x86_64-linux-gnu/7/cc1...(no debugging symbols found)...done. (gdb) r Starting program: /usr/lib/gcc/x86_64-linux-gnu/7/cc1 -quiet -imultiarch x86_64-linux-gnu ac -quiet -dumpbase ac -mtune=generic -march=x86-64 -auxbase a -O0 -fstack-protector-strong -Wformat -Wformat-security -o /tmp/ccWQLBBi.s Program received signal SIGILL, Illegal instruction. 0x00007ffff736cd42 in __gmpn_mul_basecase () from /usr/local/lib/libgmp.so.10 (gdb) bt #0 0x00007ffff736cd42 in __gmpn_mul_basecase () from /usr/local/lib/libgmp.so.10 #1 0xffffffffffffff01 in ?? () #2 0x00007fffffffcc70 in ?? () #3 0x00007fffffffcc60 in ?? () #4 0x0000000000000004 in ?? () #5 0x00007ffff736c7a6 in __gmpn_mul_n () from /usr/local/lib/libgmp.so.10 Backtrace stopped: previous frame inner to this frame (corrupt stack?)Parece que falló con libgmp.so.10, así que reinstalé el paquete libgmp10, pero aún falló con el mismo problema.
Todas las versiones de gcc no funcionan, gcc 7,8,9 y la versión cruzada para mips/powerpc, pero gcc funciona bien si se ejecuta en Docker.
Actualicé el sistema a 20.04.4 ahora mediante la actualización del sistema, todavía no funciona.
Supongo que libgmp detecta un tipo de CPU incorrecto al llamar.