Package: gcc-4.7 Architecture: i386 Version: 4.7.0-3 The compiler blows up on an Intel Pentium, because it uses cmove internally. (I.e. is compiled for i686+)
I realize running current Debian experimental packages on a Pentium 166 is perhaps more an exercise in retrocomputing than practicality, but I thought it was supposed to work. Certainly most other binaries do. (Note that gcc-4.6_4.6.3-1 has the same problem which may be demonstrated on a 0-byte null.c file.) Running gcc normally reports illegal instruction and internal compiler error; cc1 under the debugger makes it clearer: (The Linux kernel source tree is v3.3.2, if it matters.) Script started on Thu Apr 19 04:32:24 2012 [/usr/src/linux]$ gdb --args `cat /tmp/command` GNU gdb (GDB) 7.4-debian Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i486-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /usr/lib/gcc/i486-linux-gnu/4.7/cc1...(no debugging symbols found)...done. (gdb) run Starting program: /usr/lib/gcc/i486-linux-gnu/4.7/cc1 -E -lang-asm -quiet -nostdinc -v -I /usr/src/linux/arch/x86/include -I arch/x86/include/generated -I include -imultiarch i386-linux-gnu -D __KERNEL__ -D __ASSEMBLY__ -D CONFIG_AS_CFI=1 -D CONFIG_AS_CFI_SIGNAL_FRAME=1 -D CONFIG_AS_CFI_SECTIONS=1 -isystem /usr/lib/gcc/i486-linux-gnu/4.7/include -include /usr/src/linux/include/linux/kconfig.h arch/x86/kernel/entry_32.S -o /tmp/entry_32.s -m32 -mtune=generic -march=i586 -fno-directives-only #include "..." search starts here: #include <...> search starts here: /usr/src/linux/arch/x86/include arch/x86/include/generated include /usr/lib/gcc/i486-linux-gnu/4.7/include End of search list. Program received signal SIGILL, Illegal instruction. 0x088abfa7 in cpp_avoid_paste(cpp_reader*, cpp_token const*, cpp_token const*) () (gdb) disassemble Dump of assembler code for function _Z15cpp_avoid_pasteP10cpp_readerPK9cpp_tokenS3_: 0x088abf80 <+0>: sub $0xc,%esp 0x088abf83 <+3>: mov $0x35,%edx 0x088abf88 <+8>: mov 0x14(%esp),%ecx 0x088abf8c <+12>: mov %ebx,(%esp) 0x088abf8f <+15>: mov 0x18(%esp),%ebx 0x088abf93 <+19>: mov %edi,0x8(%esp) 0x088abf97 <+23>: mov %esi,0x4(%esp) 0x088abf9b <+27>: movzbl 0x4(%ecx),%eax 0x088abf9f <+31>: testb $0x10,0x6(%ecx) 0x088abfa3 <+35>: movzbl 0x4(%ebx),%edi => 0x088abfa7 <+39>: cmove %eax,%edx 0x088abfaa <+42>: movzwl 0x6(%ebx),%eax 0x088abfae <+46>: test $0x10,%al 0x088abfb0 <+48>: jne 0x88ac008 <_Z15cpp_avoid_pasteP10cpp_readerPK9cpp_tokenS3_+136> 0x088abfb2 <+50>: and $0xff,%edi 0x088abfb8 <+56>: mov %edi,%esi 0x088abfba <+58>: test $0x2,%al 0x088abfbc <+60>: je 0x88abfe8 <_Z15cpp_avoid_pasteP10cpp_readerPK9cpp_tokenS3_+104> 0x088abfbe <+62>: mov 0x8aaf7dc(,%esi,4),%eax 0x088abfc5 <+69>: movzbl (%eax),%esi 0x088abfc8 <+72>: cmp $0x3d,%esi 0x088abfcb <+75>: jne 0x88abff8 <_Z15cpp_avoid_pasteP10cpp_readerPK9cpp_tokenS3_+120> 0x088abfcd <+77>: cmp $0xd,%edx 0x088abfd0 <+80>: mov $0x1,%eax 0x088abfd5 <+85>: jg 0x88abff8 <_Z15cpp_avoid_pasteP10cpp_readerPK9cpp_tokenS3_+120> 0x088abfd7 <+87>: mov (%esp),%ebx 0x088abfda <+90>: mov 0x4(%esp),%esi 0x088abfde <+94>: mov 0x8(%esp),%edi 0x088abfe2 <+98>: add $0xc,%esp 0x088abfe5 <+101>: ret 0x088abfe6 <+102>: xchg %ax,%ax 0x088abfe8 <+104>: mov 0x8aaf5e0(,%esi,8),%eax 0x088abfef <+111>: test %eax,%eax 0x088abff1 <+113>: je 0x88ac020 <_Z15cpp_avoid_pasteP10cpp_readerPK9cpp_tokenS3_+160> 0x088abff3 <+115>: mov $0xffffffff,%esi 0x088abff8 <+120>: cmp $0x3c,%edx 0x088abffb <+123>: jbe 0x88ac018 <_Z15cpp_avoid_pasteP10cpp_readerPK9cpp_tokenS3_+152> 0x088abffd <+125>: xor %eax,%eax 0x088abfff <+127>: jmp 0x88abfd7 <_Z15cpp_avoid_pasteP10cpp_readerPK9cpp_tokenS3_+87> 0x088ac001 <+129>: lea 0x0(%esi,%eiz,1),%esi ---Type <return> to continue, or q <return> to quit---q Quit (gdb) quit A debugging session is active. Inferior 1 [process 16796] will be killed. Quit anyway? (y or n) y [/usr/src/linux]$ exit Script done on Thu Apr 19 04:38:54 2012 -- To UNSUBSCRIBE, email to debian-gcc-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20120419055750.24212.qm...@science.horizon.com