2.4.4-pre6 does not compile
Hi,
2.4.4-pre6 actually is the 4th 2.4.4pre-Patch that does not compile without further patching on my system. :-(
ld -m elf_i386 -T /usr/src/linux-2.4.4-pre6/arch/i386/vmlinux.lds -e stext arch/i386/kernel/head.o arch/i386/kernel/init_task.o init/main.o init/version.o \
--start-group \
arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o fs/fs.o ipc/ipc.o \
drivers/block/block.o drivers/char/char.o drivers/misc/misc.o drivers/net/net.o drivers/media/media.o drivers/ide/idedriver.o drivers/scsi/scsidrv.o drivers/scsi/aic7xxx/aic7xxx_drv.o drivers/cdrom/driver.o drivers/pci/driver.o drivers/video/video.o \
net/network.o \
/usr/src/linux-2.4.4-pre6/arch/i386/lib/lib.a /usr/src/linux-2.4.4-pre6/lib/lib.a /usr/src/linux-2.4.4-pre6/arch/i386/lib/lib.a \
--end-group \
-o vmlinux/usr/src/linux-2.4.4-pre6/lib/lib.a(rwsem.o): In function `__rwsem_do_wake':rwsem.o(.text+0x30): undefined reference to __builtin_expect' rwsem.o(.text+0x73): undefined reference to __builtin_expect'
make: *** [vmlinux] Error 1
Output from grep -v ^$ .config | grep -v ^#:
CONFIG_X86=yCONFIG_ISA=yCONFIG_UID16=yCONFIG_EXPERIMENTAL=yCONFIG_MODULES=yCONFIG_MK6=yCONFIG_X86_WP_WORKS_OK=yCONFIG_X86_INVLPG=yCONFIG_X86_CMPXCHG=yCONFIG_X86_XADD=yCONFIG_X86_BSWAP=yCONFIG_X86_POPAD_OK=yCONFIG_RWSEM_XCHGADD_ALGORITHM=yCONFIG_X86_L1_CACHE_SHIFT=5CONFIG_X86_ALIGNMENT_16=yCONFIG_X86_TSC=yCONFIG_X86_USE_PPRO_CHECKSUM=yCONFIG_X86_MSR=yCONFIG_X86_CPUID=yCONFIG_NOHIGHMEM=yCONFIG_MTRR=yCONFIG_NET=yCONFIG_PCI=yCONFIG_PCI_GOBIOS=yCONFIG_PCI_BIOS=yCONFIG_PCI_NAMES=yCONFIG_SYSVIPC=yCONFIG_BSD_PROCESS_ACCT=yCONFIG_SYSCTL=yCONFIG_KCORE_ELF=yCONFIG_BINFMT_ELF=yCONFIG_PARPORT=mCONFIG_PARPORT_PC=mCONFIG_PARPORT_1284=yCONFIG_BLK_DEV_FD=mCONFIG_BLK_DEV_LOOP=mCONFIG_PACKET=yCONFIG_PACKET_MMAP=yCONFIG_NETFILTER=yCONFIG_FILTER=yCONFIG_UNIX=yCONFIG_INET=yCONFIG_SYN_COOKIES=yCONFIG_IDE=yCONFIG_BLK_DEV_IDE=yCONFIG_BLK_DEV_IDEDISK=yCONFIG_BLK_DEV_IDECD=mCONFIG_BLK_DEV_IDEPCI=yCONFIG_BLK_DEV_IDEDMA_PCI=yCONFIG_IDEDMA_PCI_AUTO=yCONFIG_BLK_DEV_IDEDMA=yCONFIG_BLK_DEV_PIIX=yCONFIG_PIIX_TUNING=yCONFIG_IDEDMA_AUTO=yCONFIG_BLK_DEV_IDE_MODES=yCONFIG_SCSI=yCONFIG_BLK_DEV_SD=yCONFIG_SD_EXTRA_DEVS=40CONFIG_BLK_DEV_SR=mCONFIG_SR_EXTRA_DEVS=2CONFIG_CHR_DEV_SG=mCONFIG_SCSI_DEBUG_QUEUES=yCONFIG_SCSI_AIC7XXX=yCONFIG_AIC7XXX_CMDS_PER_DEVICE=8CONFIG_AIC7XXX_RESET_DELAY=5CONFIG_NETDEVICES=yCONFIG_NET_ETHERNET=yCONFIG_NET_PCI=yCONFIG_NE2K_PCI=mCONFIG_PPP=mCONFIG_PPP_MULTILINK=yCONFIG_PPP_ASYNC=mCONFIG_PPP_DEFLATE=mCONFIG_PPP_BSDCOMP=mCONFIG_ISDN=mCONFIG_ISDN_PPP=yCONFIG_ISDN_PPP_VJ=yCONFIG_ISDN_PPP_BSDCOMP=mCONFIG_ISDN_DRV_HISAX=mCONFIG_HISAX_EURO=yCONFIG_HISAX_FRITZPCI=yCONFIG_VT=yCONFIG_VT_CONSOLE=yCONFIG_SERIAL=mCONFIG_UNIX98_PTYS=yCONFIG_UNIX98_PTY_COUNT=256CONFIG_PRINTER=mCONFIG_FAT_FS=yCONFIG_MSDOS_FS=yCONFIG_VFAT_FS=yCONFIG_ISO9660_FS=mCONFIG_JOLIET=yCONFIG_MINIX_FS=mCONFIG_NTFS_FS=mCONFIG_PROC_FS=yCONFIG_DEVPTS_FS=yCONFIG_EXT2_FS=yCONFIG_MSDOS_PARTITION=yCONFIG_NLS=yCONFIG_NLS_DEFAULT="iso8859-1"CONFIG_NLS_CODEPAGE_437=mCONFIG_NLS_CODEPAGE_850=mCONFIG_NLS_CODEPAGE_852=mCONFIG_NLS_ISO8859_1=mCONFIG_NLS_ISO8859_2=mCONFIG_NLS_ISO8859_15=mCONFIG_NLS_UTF8=mCONFIG_VGA_CONSOLE=yCONFIG_VIDEO_SELECT=yCONFIG_SOUND=mCONFIG_SOUND_OSS=mCONFIG_SOUND_TRACEINIT=yCONFIG_SOUND_DMAP=yCONFIG_SOUND_ADLIB=mCONFIG_SOUND_SB=mCONFIG_SOUND_YM3812=m
Output from sh scripts/ver_linux:
If some fields are empty or look unusual you may have an old version. Compare to the current minimal requirements in Documentation/Changes.
Linux tolot 2.4.4-pre5 #2 Fri Apr 20 08:32:13 CEST 2001 i586 unknown
Gnu C 2.95.3 Gnu make 3.79.1 binutils 2.11.90.0.5 util-linux 2.11b mount 2.11b modutils 2.4.5 e2fsprogs 1.19 pcmcia-cs 3.0.14 PPP 2.4.1 isdn4k-utils 3.1pre1 Linux C Library 2.1.3 ldd: version 1.9.9 Procps 2.0.7 Net-tools 1.60 Kbd 0.99 Sh-utils 2.0.11 Modules Loaded nls_utf8 nls_iso8859-15 nls_iso8859-2 nls_iso8859-1 nls_cp852 nls_cp850 nls_cp437 floppy sr_mod sg isofs ne2k-pci 8390 ide-cd cdrom adlib_card opl3 sb sb_lib uart401 sound soundcore lp parport serial
TIA,
Jochen Striepe.
Signature · 1 line
Never send a man where you can send a bullet.
Quoted 4 lines · Jochen Striepe
2.4.4-pre6 actually is the 4th 2.4.4pre-Patch that does not compile without further patching on my system. :-(
rwsem.o(.text+0x30): undefined reference to__builtin_expect' rwsem.o(.text+0x73): undefined reference to__builtin_expect'
Its because you're using a version of gcc which doesn't have __builtin_expect (eg, egcs 1.1.2, some versions of gcc 2.95). I'm told that gcc 2.95.[12] are not suitable for kernel compilation...
I've currently got the following in my tree (sorry, no diff since I've got other changes in this file). lib/rwsem.c, line 9, add:
#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96) #define __builtin_expect(exp,c) (exp)
#endif
I'm not sure if this is correct, or which compilers work, which don't (so don't anyone go and drop it into Linus/Alans kernels), but it seems to work for me.
--
Russell King ([email protected]) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html
Quoted 2 lines
Its because you're using a version of gcc which doesn't have
__builtin_expect(eg, egcs 1.1.2, some versions of gcc 2.95).
No 2.95.x has __builtin_expect. There might be some 2.95-derived GNUpro that supports it but I doubt anyone is using those to build kernels.
p.