alternative() breaks on compilation with .text.exit on 2.5.69
ld -m elf_i386 -T arch/i386/vmlinux.lds.s arch/i386/kernel/head.o arch/i386/kernel/init_task.o init/built-in.o --start-group usr/built-in.o arch/i386/kernel/built-in.o arch/i386/mm/built-in.o arch/i386/mach-default/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o security/built-in.o crypto/built-in.o lib/lib.a arch/i386/lib/lib.a drivers/built-in.o sound/built-in.o arch/i386/pci/built-in.o net/built-in.o --end-group -o vmlinuxdrivers/built-in.o(.altinstructions+0x84c): undefined reference to local symbols in discarded section .exit.text' drivers/built-in.o(.altinstructions+0x858): undefined reference to local symbols in discarded section .exit.text'
make: *** [vmlinux] Error 1
There are two problems visible with this:
1) Macros using alternative*() break when called from a discarded section (probably some driver compiled in the kernel that can also be compiled as a module and thus has an exit routine which was discarded)
2) I'm not using a CONFIG_X86_GENERIC kernel, so it has no need for dynamic patching (it already knows the CPU type with enough level of detail, since I told it).
Here's the .config file to reproduce the error:
CONFIG_X86=yCONFIG_MMU=yCONFIG_UID16=yCONFIG_GENERIC_ISA_DMA=yCONFIG_EXPERIMENTAL=yCONFIG_SWAP=yCONFIG_SYSVIPC=yCONFIG_BSD_PROCESS_ACCT=yCONFIG_SYSCTL=yCONFIG_LOG_BUF_SHIFT=14CONFIG_MODULES=yCONFIG_MODULE_UNLOAD=yCONFIG_OBSOLETE_MODPARM=yCONFIG_MODVERSIONS=yCONFIG_KMOD=yCONFIG_X86_PC=yCONFIG_MK6=yCONFIG_X86_CMPXCHG=yCONFIG_X86_XADD=yCONFIG_X86_L1_CACHE_SHIFT=5CONFIG_RWSEM_XCHGADD_ALGORITHM=yCONFIG_X86_WP_WORKS_OK=yCONFIG_X86_INVLPG=yCONFIG_X86_BSWAP=yCONFIG_X86_POPAD_OK=yCONFIG_X86_ALIGNMENT_16=yCONFIG_X86_USE_PPRO_CHECKSUM=yCONFIG_HUGETLB_PAGE=yCONFIG_PREEMPT=yCONFIG_X86_TSC=yCONFIG_X86_MCE=yCONFIG_X86_MSR=yCONFIG_X86_CPUID=yCONFIG_NOHIGHMEM=yCONFIG_MTRR=yCONFIG_HAVE_DEC_LOCK=yCONFIG_PM=yCONFIG_SOFTWARE_SUSPEND=yCONFIG_ACPI=yCONFIG_ACPI_BOOT=yCONFIG_ACPI_SLEEP=yCONFIG_ACPI_SLEEP_PROC_FS=yCONFIG_ACPI_BUTTON=yCONFIG_ACPI_FAN=yCONFIG_ACPI_PROCESSOR=yCONFIG_ACPI_THERMAL=yCONFIG_ACPI_BUS=yCONFIG_ACPI_INTERPRETER=yCONFIG_ACPI_EC=yCONFIG_ACPI_POWER=yCONFIG_ACPI_PCI=yCONFIG_ACPI_SYSTEM=yCONFIG_PCI=yCONFIG_PCI_GOANY=yCONFIG_PCI_BIOS=yCONFIG_PCI_DIRECT=yCONFIG_PCI_NAMES=yCONFIG_ISA=yCONFIG_HOTPLUG=yCONFIG_PCMCIA_PROBE=yCONFIG_KCORE_ELF=yCONFIG_BINFMT_AOUT=mCONFIG_BINFMT_ELF=yCONFIG_BINFMT_MISC=mCONFIG_PARPORT=yCONFIG_PARPORT_PC=yCONFIG_PARPORT_PC_CML1=yCONFIG_PARPORT_PC_FIFO=yCONFIG_PARPORT_PC_SUPERIO=yCONFIG_PARPORT_1284=yCONFIG_PNP=yCONFIG_PNP_NAMES=yCONFIG_ISAPNP=yCONFIG_PNPBIOS=yCONFIG_BLK_DEV_FD=yCONFIG_BLK_DEV_LOOP=yCONFIG_BLK_DEV_NBD=mCONFIG_BLK_DEV_RAM=yCONFIG_BLK_DEV_RAM_SIZE=8192CONFIG_BLK_DEV_INITRD=yCONFIG_IDE=yCONFIG_BLK_DEV_IDE=yCONFIG_BLK_DEV_IDEDISK=yCONFIG_BLK_DEV_IDECD=yCONFIG_BLK_DEV_IDEPCI=yCONFIG_BLK_DEV_GENERIC=yCONFIG_IDEPCI_SHARE_IRQ=yCONFIG_BLK_DEV_IDEDMA_PCI=yCONFIG_IDEDMA_PCI_AUTO=yCONFIG_BLK_DEV_IDEDMA=yCONFIG_BLK_DEV_ADMA=yCONFIG_BLK_DEV_ALI15X3=yCONFIG_IDEDMA_AUTO=yCONFIG_BLK_DEV_IDE_MODES=yCONFIG_NET=yCONFIG_PACKET=yCONFIG_PACKET_MMAP=yCONFIG_NETLINK_DEV=yCONFIG_NETFILTER=yCONFIG_UNIX=yCONFIG_NET_KEY=yCONFIG_INET=yCONFIG_IP_MULTICAST=yCONFIG_IP_ADVANCED_ROUTER=yCONFIG_IP_MULTIPLE_TABLES=yCONFIG_IP_ROUTE_FWMARK=yCONFIG_IP_ROUTE_NAT=yCONFIG_IP_ROUTE_MULTIPATH=yCONFIG_IP_ROUTE_TOS=yCONFIG_IP_ROUTE_VERBOSE=yCONFIG_IP_ROUTE_LARGE_TABLES=yCONFIG_NET_IPIP=mCONFIG_NET_IPGRE=mCONFIG_NET_IPGRE_BROADCAST=yCONFIG_IP_MROUTE=yCONFIG_IP_PIMSM_V1=yCONFIG_IP_PIMSM_V2=yCONFIG_INET_ECN=yCONFIG_SYN_COOKIES=yCONFIG_INET_AH=yCONFIG_INET_ESP=yCONFIG_INET_IPCOMP=yCONFIG_IP_NF_CONNTRACK=yCONFIG_IP_NF_FTP=yCONFIG_IP_NF_IRC=yCONFIG_IP_NF_TFTP=yCONFIG_IP_NF_AMANDA=yCONFIG_IP_NF_QUEUE=yCONFIG_IP_NF_IPTABLES=yCONFIG_IP_NF_MATCH_LIMIT=yCONFIG_IP_NF_MATCH_MAC=yCONFIG_IP_NF_MATCH_PKTTYPE=yCONFIG_IP_NF_MATCH_MARK=yCONFIG_IP_NF_MATCH_MULTIPORT=yCONFIG_IP_NF_MATCH_TOS=yCONFIG_IP_NF_MATCH_ECN=yCONFIG_IP_NF_MATCH_DSCP=yCONFIG_IP_NF_MATCH_AH_ESP=yCONFIG_IP_NF_MATCH_LENGTH=yCONFIG_IP_NF_MATCH_TTL=yCONFIG_IP_NF_MATCH_TCPMSS=yCONFIG_IP_NF_MATCH_HELPER=yCONFIG_IP_NF_MATCH_STATE=yCONFIG_IP_NF_MATCH_CONNTRACK=yCONFIG_IP_NF_MATCH_UNCLEAN=yCONFIG_IP_NF_MATCH_OWNER=yCONFIG_IP_NF_FILTER=yCONFIG_IP_NF_TARGET_REJECT=yCONFIG_IP_NF_TARGET_MIRROR=yCONFIG_IP_NF_NAT=yCONFIG_IP_NF_NAT_NEEDED=yCONFIG_IP_NF_TARGET_MASQUERADE=yCONFIG_IP_NF_TARGET_REDIRECT=yCONFIG_IP_NF_NAT_LOCAL=yCONFIG_IP_NF_NAT_SNMP_BASIC=yCONFIG_IP_NF_NAT_IRC=yCONFIG_IP_NF_NAT_FTP=yCONFIG_IP_NF_NAT_TFTP=yCONFIG_IP_NF_NAT_AMANDA=yCONFIG_IP_NF_MANGLE=yCONFIG_IP_NF_TARGET_TOS=yCONFIG_IP_NF_TARGET_ECN=yCONFIG_IP_NF_TARGET_DSCP=yCONFIG_IP_NF_TARGET_MARK=yCONFIG_IP_NF_TARGET_LOG=yCONFIG_IP_NF_TARGET_ULOG=yCONFIG_IP_NF_TARGET_TCPMSS=yCONFIG_IP_NF_ARPTABLES=yCONFIG_IP_NF_ARPFILTER=yCONFIG_IPV6=yCONFIG_IPV6_PRIVACY=yCONFIG_INET6_AH=yCONFIG_INET6_ESP=yCONFIG_IP6_NF_QUEUE=yCONFIG_IP6_NF_IPTABLES=yCONFIG_IP6_NF_MATCH_LIMIT=yCONFIG_IP6_NF_MATCH_MAC=yCONFIG_IP6_NF_MATCH_RT=yCONFIG_IP6_NF_MATCH_OPTS=yCONFIG_IP6_NF_MATCH_FRAG=yCONFIG_IP6_NF_MATCH_HL=yCONFIG_IP6_NF_MATCH_MULTIPORT=yCONFIG_IP6_NF_MATCH_OWNER=yCONFIG_IP6_NF_MATCH_MARK=yCONFIG_IP6_NF_MATCH_IPV6HEADER=yCONFIG_IP6_NF_MATCH_AHESP=yCONFIG_IP6_NF_MATCH_LENGTH=yCONFIG_IP6_NF_MATCH_EUI64=yCONFIG_IP6_NF_FILTER=yCONFIG_IP6_NF_TARGET_LOG=yCONFIG_IP6_NF_MANGLE=yCONFIG_IP6_NF_TARGET_MARK=yCONFIG_XFRM_USER=yCONFIG_IPV6_SCTP__=yCONFIG_IP_SCTP=yCONFIG_NET_DIVERT=yCONFIG_NET_SCHED=yCONFIG_NET_SCH_CBQ=yCONFIG_NET_SCH_HTB=yCONFIG_NET_SCH_CSZ=yCONFIG_NET_SCH_PRIO=yCONFIG_NET_SCH_RED=yCONFIG_NET_SCH_SFQ=yCONFIG_NET_SCH_TEQL=yCONFIG_NET_SCH_TBF=yCONFIG_NET_SCH_GRED=yCONFIG_NET_SCH_DSMARK=yCONFIG_NET_SCH_INGRESS=yCONFIG_NET_QOS=yCONFIG_NET_ESTIMATOR=yCONFIG_NET_CLS=yCONFIG_NET_CLS_TCINDEX=yCONFIG_NET_CLS_ROUTE4=yCONFIG_NET_CLS_ROUTE=yCONFIG_NET_CLS_FW=yCONFIG_NET_CLS_U32=yCONFIG_NET_CLS_RSVP=yCONFIG_NET_CLS_RSVP6=yCONFIG_NET_CLS_POLICE=yCONFIG_NETDEVICES=yCONFIG_DUMMY=mCONFIG_TUN=yCONFIG_NET_ETHERNET=yCONFIG_MII=yCONFIG_NET_PCI=yCONFIG_NE2K_PCI=yCONFIG_PPP=mCONFIG_PPP_FILTER=yCONFIG_PPP_ASYNC=mCONFIG_PPP_DEFLATE=mCONFIG_PPP_BSDCOMP=mCONFIG_SHAPER=mCONFIG_INPUT=yCONFIG_INPUT_MOUSEDEV=yCONFIG_INPUT_MOUSEDEV_PSAUX=yCONFIG_INPUT_MOUSEDEV_SCREEN_X=1024CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768CONFIG_INPUT_JOYDEV=yCONFIG_INPUT_EVDEV=yCONFIG_GAMEPORT=yCONFIG_SOUND_GAMEPORT=yCONFIG_GAMEPORT_NS558=yCONFIG_SERIO=yCONFIG_SERIO_I8042=yCONFIG_SERIO_SERPORT=yCONFIG_INPUT_KEYBOARD=yCONFIG_KEYBOARD_ATKBD=yCONFIG_INPUT_MOUSE=yCONFIG_MOUSE_PS2=yCONFIG_MOUSE_SERIAL=yCONFIG_INPUT_JOYSTICK=yCONFIG_JOYSTICK_ANALOG=mCONFIG_INPUT_MISC=yCONFIG_INPUT_PCSPKR=yCONFIG_INPUT_UINPUT=yCONFIG_VT=yCONFIG_VT_CONSOLE=yCONFIG_HW_CONSOLE=yCONFIG_SERIAL_8250=yCONFIG_SERIAL_CORE=yCONFIG_UNIX98_PTYS=yCONFIG_UNIX98_PTY_COUNT=2048CONFIG_PRINTER=yCONFIG_PPDEV=yCONFIG_I2C=yCONFIG_I2C_CHARDEV=yCONFIG_I2C_ALI15X3=yCONFIG_SENSORS_LM75=yCONFIG_SENSORS_W83781D=yCONFIG_I2C_SENSOR=yCONFIG_WATCHDOG=yCONFIG_SOFT_WATCHDOG=yCONFIG_NVRAM=yCONFIG_RTC=yCONFIG_AGP=yCONFIG_AGP_ALI=yCONFIG_DRM=yCONFIG_HANGCHECK_TIMER=yCONFIG_EXT2_FS=yCONFIG_EXT2_FS_XATTR=yCONFIG_EXT2_FS_POSIX_ACL=yCONFIG_EXT3_FS=yCONFIG_EXT3_FS_XATTR=yCONFIG_EXT3_FS_POSIX_ACL=yCONFIG_JBD=yCONFIG_FS_MBCACHE=yCONFIG_REISERFS_FS=yCONFIG_FS_POSIX_ACL=yCONFIG_QUOTA=yCONFIG_QFMT_V2=yCONFIG_QUOTACTL=yCONFIG_ISO9660_FS=yCONFIG_JOLIET=yCONFIG_ZISOFS=yCONFIG_ZISOFS_FS=yCONFIG_UDF_FS=yCONFIG_FAT_FS=yCONFIG_MSDOS_FS=yCONFIG_VFAT_FS=yCONFIG_PROC_FS=yCONFIG_DEVFS_FS=yCONFIG_DEVFS_MOUNT=yCONFIG_DEVPTS_FS=yCONFIG_TMPFS=yCONFIG_HUGETLBFS=yCONFIG_RAMFS=yCONFIG_NFS_FS=yCONFIG_NFS_V3=yCONFIG_NFS_V4=yCONFIG_NFSD=yCONFIG_NFSD_V3=yCONFIG_NFSD_V4=yCONFIG_NFSD_TCP=yCONFIG_LOCKD=yCONFIG_LOCKD_V4=yCONFIG_EXPORTFS=yCONFIG_SUNRPC=yCONFIG_SUNRPC_GSS=yCONFIG_RPCSEC_GSS_KRB5=yCONFIG_SMB_FS=mCONFIG_CIFS=mCONFIG_NCP_FS=mCONFIG_NCPFS_PACKET_SIGNING=yCONFIG_NCPFS_IOCTL_LOCKING=yCONFIG_NCPFS_STRONG=yCONFIG_NCPFS_NFS_NS=yCONFIG_NCPFS_OS2_NS=yCONFIG_NCPFS_SMALLDOS=yCONFIG_NCPFS_NLS=yCONFIG_NCPFS_EXTRAS=yCONFIG_CODA_FS=mCONFIG_INTERMEZZO_FS=mCONFIG_AFS_FS=mCONFIG_RXRPC=mCONFIG_MSDOS_PARTITION=yCONFIG_SMB_NLS=yCONFIG_NLS=yCONFIG_NLS_DEFAULT="iso8859-1"CONFIG_NLS_CODEPAGE_437=mCONFIG_NLS_CODEPAGE_737=mCONFIG_NLS_CODEPAGE_775=mCONFIG_NLS_CODEPAGE_850=mCONFIG_NLS_CODEPAGE_852=mCONFIG_NLS_CODEPAGE_855=mCONFIG_NLS_CODEPAGE_857=mCONFIG_NLS_CODEPAGE_860=mCONFIG_NLS_CODEPAGE_861=mCONFIG_NLS_CODEPAGE_862=mCONFIG_NLS_CODEPAGE_863=mCONFIG_NLS_CODEPAGE_864=mCONFIG_NLS_CODEPAGE_865=mCONFIG_NLS_CODEPAGE_866=mCONFIG_NLS_CODEPAGE_869=mCONFIG_NLS_CODEPAGE_936=mCONFIG_NLS_CODEPAGE_950=mCONFIG_NLS_CODEPAGE_932=mCONFIG_NLS_CODEPAGE_949=mCONFIG_NLS_CODEPAGE_874=mCONFIG_NLS_ISO8859_8=mCONFIG_NLS_CODEPAGE_1250=mCONFIG_NLS_CODEPAGE_1251=mCONFIG_NLS_ISO8859_1=mCONFIG_NLS_ISO8859_2=mCONFIG_NLS_ISO8859_3=mCONFIG_NLS_ISO8859_4=mCONFIG_NLS_ISO8859_5=mCONFIG_NLS_ISO8859_6=mCONFIG_NLS_ISO8859_7=mCONFIG_NLS_ISO8859_9=mCONFIG_NLS_ISO8859_13=mCONFIG_NLS_ISO8859_14=mCONFIG_NLS_ISO8859_15=mCONFIG_NLS_KOI8_R=mCONFIG_NLS_KOI8_U=mCONFIG_NLS_UTF8=mCONFIG_FB=yCONFIG_FB_VESA=yCONFIG_VIDEO_SELECT=yCONFIG_VGA_CONSOLE=yCONFIG_DUMMY_CONSOLE=yCONFIG_FRAMEBUFFER_CONSOLE=yCONFIG_PCI_CONSOLE=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=yCONFIG_LOGO=yCONFIG_LOGO_LINUX_MONO=yCONFIG_LOGO_LINUX_VGA16=yCONFIG_LOGO_LINUX_CLUT224=yCONFIG_SOUND=yCONFIG_SND=yCONFIG_SND_SEQUENCER=yCONFIG_SND_SEQ_DUMMY=mCONFIG_SND_OSSEMUL=yCONFIG_SND_MIXER_OSS=yCONFIG_SND_PCM_OSS=yCONFIG_SND_SEQUENCER_OSS=yCONFIG_SND_RTCTIMER=yCONFIG_SND_SERIAL_U16550=mCONFIG_SND_SBAWE=yCONFIG_SND_SB16_CSP=yCONFIG_SND_CMI8330=yCONFIG_SECURITY=yCONFIG_SECURITY_NETWORK=yCONFIG_SECURITY_CAPABILITIES=yCONFIG_CRYPTO=yCONFIG_CRYPTO_HMAC=yCONFIG_CRYPTO_NULL=yCONFIG_CRYPTO_MD4=yCONFIG_CRYPTO_MD5=yCONFIG_CRYPTO_SHA1=yCONFIG_CRYPTO_SHA256=yCONFIG_CRYPTO_SHA512=yCONFIG_CRYPTO_DES=yCONFIG_CRYPTO_BLOWFISH=yCONFIG_CRYPTO_TWOFISH=yCONFIG_CRYPTO_SERPENT=yCONFIG_CRYPTO_AES=yCONFIG_CRYPTO_DEFLATE=yCONFIG_CRC32=mCONFIG_ZLIB_INFLATE=yCONFIG_ZLIB_DEFLATE=yCONFIG_X86_BIOS_REBOOT=y
Signature · 3 lines
Cesar Eduardo Barros [email protected] [email protected]