Messages in this thread | | | Subject | egcs v1.1.1 compiler bug? @ Linux v2.2.0-pre6 / depca.c | From | Markus Linnala <> | Date | 11 Jan 1999 05:30:39 +0200 |
| |
Tried to compile with egcs v1.1.1 and seems compiler barfs at depca.c.
Linux kernel version is 2.2.0-pre6
Any verifications? And I'm sorry I'm not able to debug this further.
------------------------------------------------------------------------ /usr/local/bin/egcs -D__KERNEL__ -I/usr/src/linux-2.2.0-pre6-egcs/include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe -fno-strength-reduce -mpentium -DCPU=586 -DMODULE -DMODVERSIONS -include /usr/src/linux-2.2.0-pre6-egcs/include/linux/modversions.h -c -o depca.o depca.c depca.c: In function `EISA_signature': depca.c:1802: fixed or forbidden register 7 (sp) was spilled for class GENERAL_REGS. This may be due to a compiler bug or to impossible asm statements or clauses. ------------------------------------------------------------------------
--[[text/plain]] I've reduced problem to following part: ------------------------------------------------------------------------ /usr/local/bin/egcs -v -O2 -fno-strength-reduce -c depca_bug.c Reading specs from /usr/local/lib/gcc-lib/i586-pc-linux-gnu/egcs-2.91.60/specs gcc version egcs-2.91.60 19981201 (egcs-1.1.1 release) /usr/local/lib/gcc-lib/i586-pc-linux-gnu/egcs-2.91.60/cpp -lang-c -v -undef -D__GNUC__=2 -D__GNUC_MINOR__=91 -D__ELF__ -Dunix -Di386 -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__i386__ -D__linux__ -D__unix -D__i386 -D__linux -Asystem(posix) -D__OPTIMIZE__ -Asystem(unix) -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -Di586 -Dpentium -D__i586 -D__i586__ -D__pentium -D__pentium__ depca_bug.c /tmp/cccRZWpW.i GNU CPP version egcs-2.91.60 19981201 (egcs-1.1.1 release) (i386 Linux/ELF) #include "..." search starts here: #include <...> search starts here: /usr/local/include /usr/local/i586-pc-linux-gnu/include /usr/local/lib/gcc-lib/i586-pc-linux-gnu/egcs-2.91.60/include /usr/include End of search list. /usr/local/lib/gcc-lib/i586-pc-linux-gnu/egcs-2.91.60/cc1 /tmp/cccRZWpW.i -quiet -dumpbase depca_bug.c -O2 -version -fno-strength-reduce -o /tmp/cc0GxsHU.s GNU C version egcs-2.91.60 19981201 (egcs-1.1.1 release) (i586-pc-linux-gnu) compiled by GNU C version egcs-2.91.60 19981201 (egcs-1.1.1 release). depca_bug.c: In function `EISA_signature': depca_bug.c:70: fixed or forbidden register 7 (sp) was spilled for class GENERAL_REGS. This may be due to a compiler bug or to impossible asm statements or clauses. ------------------------------------------------------------------------
depca_bug.c follows --[[text/plain]] extern inline unsigned int inl (unsigned short port) { unsigned int _v; __asm__ __volatile__ ("in" "l" " %" "w" "1,%" "" "0" : "=a" (_v) : "Nd" (port) ); return _v; } extern inline unsigned int inl_p (unsigned short port) { unsigned int _v; __asm__ __volatile__ ("in" "l" " %" "w" "1,%" "" "0" "\noutb %%al,$0x80" : "=a" (_v) : "Nd" (port) ); return _v; } extern inline char * strcpy(char * dest,const char *src) { int d0, d1, d2; __asm__ __volatile__( "cld\n" "1:\tlodsb\n\t" "stosb\n\t" "testb %%al,%%al\n\t" "jne 1b" : "=&S" (d0), "=&D" (d1), "=&a" (d2) :"0" (src),"1" (dest) : "memory"); return dest; } extern inline char * strstr(const char * cs,const char * ct)
{ int d0, d1, d2, d3; register char * __res; __asm__ __volatile__( "cld\n\t" "movl %8,%%edi\n\t" "repne\n\t" "scasb\n\t" "notl %%ecx\n\t" "decl %%ecx\n\t" "movl %%ecx,%%edx\n" "1:\tmovl %8,%%edi\n\t" "movl %%esi,%%eax\n\t" "movl %%edx,%%ecx\n\t" "repe\n\t" "cmpsb\n\t" "je 2f\n\t" "xchgl %%eax,%%esi\n\t" "incl %%esi\n\t" "cmpb $0,-1(%%eax)\n\t" "jne 1b\n\t" "xorl %%eax,%%eax\n\t" "2:" :"=a" (__res), "=&c" (d0), "=&S" (d1), "=&d" (d2), "=&D" (d3) : "0" (0),"1" (0xffffffff),"2" (cs),"g" (ct)); return __res; }
static int EISA_signature(char *name, int eisa_id) { unsigned int i; const char *signatures[] = {"DEPCA", "DE100","DE101", "DE200","DE201","DE202", "DE210","DE212", "DE422", ""} ; char ManCode[16 ]; union { int ID; char Id[4]; } Eisa; int status = 0; *name = '\0'; Eisa.ID = inl(eisa_id); ManCode[0]=(((Eisa.Id[0]>>2)&0x1f)+0x40); ManCode[1]=(((Eisa.Id[1]&0xe0)>>5)+((Eisa.Id[0]&0x03)<<3)+0x40); ManCode[2]=(((Eisa.Id[2]>>4)&0x0f)+0x30); ManCode[3]=(( Eisa.Id[2]&0x0f)+0x30); ManCode[4]=(((Eisa.Id[3]>>4)&0x0f)+0x30); ManCode[5]='\0'; for (i=0;(*signatures[i] != '\0') && (*name == '\0');i++) { if (strstr(ManCode, signatures[i]) != ((void *) 0) ) { strcpy(name,ManCode); status = 1; } } return status; } --[[text/plain]] #My kernel configuration: CONFIG_EXPERIMENTAL=y CONFIG_M586TSC=y CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_INVLPG=y CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y CONFIG_X86_TSC=y CONFIG_MODULES=y CONFIG_MODVERSIONS=y CONFIG_KMOD=y CONFIG_NET=y CONFIG_PCI=y CONFIG_PCI_GOANY=y CONFIG_PCI_BIOS=y CONFIG_PCI_DIRECT=y CONFIG_PCI_QUIRKS=y CONFIG_SYSVIPC=y CONFIG_BSD_PROCESS_ACCT=y CONFIG_SYSCTL=y CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_ELF=y CONFIG_BINFMT_MISC=m CONFIG_PARPORT=m CONFIG_PARPORT_PC=m CONFIG_BLK_DEV_FD=y CONFIG_BLK_DEV_IDE=y CONFIG_BLK_DEV_IDEDISK=y CONFIG_BLK_DEV_IDECD=m CONFIG_BLK_DEV_IDEPCI=y CONFIG_BLK_DEV_IDEDMA=y CONFIG_BLK_DEV_LOOP=m CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_MD=y CONFIG_MD_LINEAR=y CONFIG_MD_STRIPED=y CONFIG_MD_MIRRORING=m CONFIG_MD_RAID5=m CONFIG_BLK_DEV_RAM=m CONFIG_BLK_DEV_XD=m CONFIG_PARIDE_PARPORT=m CONFIG_PACKET=y CONFIG_NETLINK=y CONFIG_RTNETLINK=y CONFIG_NETLINK_DEV=y CONFIG_FIREWALL=y CONFIG_NET_ALIAS=y CONFIG_FILTER=y CONFIG_UNIX=y CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_FIREWALL=y CONFIG_IP_FIREWALL_NETLINK=y CONFIG_NETLINK_DEV=y CONFIG_NET_IPIP=m CONFIG_NET_IPGRE=m CONFIG_IP_ALIAS=y CONFIG_SYN_COOKIES=y CONFIG_INET_RARP=m CONFIG_IP_NOSR=y CONFIG_SKB_LARGE=y CONFIG_NETDEVICES=y CONFIG_DUMMY=m CONFIG_ETHERTAP=m CONFIG_NET_ETHERNET=y CONFIG_NET_VENDOR_3COM=y CONFIG_EL3=y CONFIG_NET_ISA=y CONFIG_DEPCA=m CONFIG_NE2000=m CONFIG_VT=y CONFIG_VT_CONSOLE=y CONFIG_SERIAL=y CONFIG_UNIX98_PTYS=y CONFIG_UNIX98_PTY_COUNT=256 CONFIG_PRINTER=m CONFIG_PRINTER_READBACK=y CONFIG_NVRAM=m CONFIG_RTC=y CONFIG_FTAPE=m CONFIG_ZFTAPE=m CONFIG_ZFT_DFLT_BLK_SZ=10240 CONFIG_ZFT_COMPRESSOR=m CONFIG_FT_NR_BUFFERS=3 CONFIG_FT_PROC_FS=y CONFIG_FT_NORMAL_DEBUG=y CONFIG_FT_STD_FDC=y CONFIG_FT_FDC_THR=8 CONFIG_FT_FDC_MAX_RATE=2000 CONFIG_FT_ALPHA_CLOCK=0 CONFIG_AUTOFS_FS=m CONFIG_FAT_FS=m CONFIG_MSDOS_FS=m CONFIG_UMSDOS_FS=m CONFIG_VFAT_FS=m CONFIG_ISO9660_FS=m CONFIG_JOLIET=y CONFIG_PROC_FS=y CONFIG_DEVPTS_FS=y CONFIG_EXT2_FS=y CONFIG_CODA_FS=m CONFIG_NFS_FS=y CONFIG_NFSD=m CONFIG_SUNRPC=y CONFIG_LOCKD=y CONFIG_SMB_FS=m CONFIG_NLS=y CONFIG_NLS_CODEPAGE_437=m CONFIG_NLS_CODEPAGE_737=m CONFIG_NLS_CODEPAGE_775=m CONFIG_NLS_CODEPAGE_850=m CONFIG_NLS_CODEPAGE_852=m CONFIG_NLS_CODEPAGE_855=m CONFIG_NLS_CODEPAGE_857=m CONFIG_NLS_CODEPAGE_860=m CONFIG_NLS_CODEPAGE_861=m CONFIG_NLS_CODEPAGE_862=m CONFIG_NLS_CODEPAGE_863=m CONFIG_NLS_CODEPAGE_864=m CONFIG_NLS_CODEPAGE_865=m CONFIG_NLS_CODEPAGE_866=m CONFIG_NLS_CODEPAGE_869=m CONFIG_NLS_CODEPAGE_874=m CONFIG_NLS_ISO8859_1=m CONFIG_NLS_ISO8859_2=m CONFIG_NLS_ISO8859_3=m CONFIG_NLS_ISO8859_4=m CONFIG_NLS_ISO8859_5=m CONFIG_NLS_ISO8859_6=m CONFIG_NLS_ISO8859_7=m CONFIG_NLS_ISO8859_8=m CONFIG_NLS_ISO8859_9=m CONFIG_NLS_ISO8859_15=m CONFIG_NLS_KOI8_R=m CONFIG_VGA_CONSOLE=y CONFIG_VIDEO_SELECT=y CONFIG_SOUND=m CONFIG_SOUND_OSS=m CONFIG_SOUND_SB=m CONFIG_SOUND_ADLIB=m CONFIG_SOUND_SOFTOSS=m CONFIG_SOUND_YM3812=m CONFIG_LOWLEVEL_SOUND=y CONFIG_AWE32_SYNTH=m CONFIG_MAGIC_SYSRQ=y --[[text/plain]] -- //Markus
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |