Build problem introduced in 2.4.22-pre3 -> 2.4.22-pre3-ac1 (+config+analysis)
Hi Alan, all,
The attached .config fails to build on 2.4.22-pre3-ac1, but builds (and runs) fine on 2.4.22-pre3. The build error (during linkage) is:
(make bzImage)
ld -m elf_i386 -T /usr/src/linux-2.4.22-pre3-ac1/arch/i386/vmlinux.lds -e stext arch/i386/kernel/head.o arch/i386/kernel/init_task.o init/main.o
init/version.o init/do_mounts.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/acpi/acpi.o drivers/cpufreq/cpufreq.o drivers/char/char.odrivers/block/block.o drivers/misc/misc.o drivers/net/net.o drivers/char/drm/drm.odrivers/ide/idedriver.o drivers/cdrom/driver.o drivers/pci/driver.o drivers/net/pcmcia/pcmcia_net.o drivers/net/wireless/wireless_net.o
drivers/pnp/pnp.o drivers/video/video.o drivers/media/media.o \
net/network.o \
/usr/src/linux-2.4.22-pre3-ac1/arch/i386/lib/lib.a
/usr/src/linux-2.4.22-pre3-ac1/lib/lib.a
/usr/src/linux-2.4.22-pre3-ac1/arch/i386/lib/lib.a \
--end-group \
-o vmlinuxarch/i386/kernel/kernel.o(.text.init+0x7dae): In function `setup_ioapic_ids_from_mpc':
: undefined reference to xapic_support' arch/i386/kernel/kernel.o(.text.init+0x7fe5): In function setup_ioapic_ids_from_mpc':
: undefined reference to `xapic_support'
make: *** [vmlinux] Error 1
The symbol xapic_support is defined in arch/i386/kernel/io_apic.c as "extern unsigned int xapic_support;"
But it is declared nowhere. Note that the symbol is new in -ac1.
Quoted 1 line
From comparing the pre3 and pre3-ac1 versions of
io_apic.c, I conclude that
this is some unfinished work and not a typo. What probably is missing is some change to another file that should decare (and set) xapic_support.
Sorry for not being able to submit a patch, but I hope my analyses helps.
Regards,
Bas.
(Dell Inspiron 8500 with 2.4.22-pre3)
(Note: I'm not on the list, so please always CC me)
Quoted 41 lines · Bas Mevissen
Hi Alan, all,
The attached .config fails to build on 2.4.22-pre3-ac1, but builds (and runs) fine on 2.4.22-pre3. The build error (during linkage) is:
(make bzImage)
ld -m
elf_i386-T/usr/src/linux-2.4.22-pre3-ac1/arch/i386/vmlinux.lds-e stextarch/i386/kernel/head.oarch/i386/kernel/init_task.oinit/main.oinit/version.o init/do_mounts.o \ --start-group \ arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o
fs/fs.oipc/ipc.o\
drivers/acpi/acpi.odrivers/cpufreq/cpufreq.odrivers/char/char.odrivers/block/block.odrivers/misc/misc.odrivers/net/net.odrivers/char/drm/drm.odrivers/ide/idedriver.odrivers/cdrom/driver.odrivers/pci/driver.odrivers/net/pcmcia/pcmcia_net.odrivers/net/wireless/wireless_net.odrivers/pnp/pnp.o drivers/video/video.o drivers/media/media.o \ net/network.o \ /usr/src/linux-2.4.22-pre3-ac1/arch/i386/lib/lib.a /usr/src/linux-2.4.22-pre3-ac1/lib/lib.a /usr/src/linux-2.4.22-pre3-ac1/arch/i386/lib/lib.a \ --end-group \ -o vmlinuxarch/i386/kernel/kernel.o(.text.init+0x7dae): In function `setup_ioapic_ids_from_mpc':
: undefined reference toxapic_support' arch/i386/kernel/kernel.o(.text.init+0x7fe5): In functionsetup_ioapic_ids_from_mpc':
: undefined reference to `xapic_support'
make: *** [vmlinux] Error 1The symbol
xapic_supportis defined inarch/i386/kernel/io_apic.cas "extern unsigned intxapic_support;"
But it is declared nowhere. Note that the symbol is new in -ac1.Quoted 1 line
From comparing the pre3 and pre3-ac1 versions of
io_apic.c, I conclude thatthis is some unfinished work and not a typo. What probably is missing is some change to another file that should decare (and set)
xapic_support.
Quoted 9 lines
Sorry for not being able to submit a patch, but I hope my analyses helps.
Regards,
Bas.
(Dell Inspiron 8500 with 2.4.22-pre3)(Note: I'm not on the list, so please always CC me)
Hello Bas,
there is two ways to fix this, you can use the the patch by Steven Cole (I'll attach it).
Or then you untar the 2.4.21 to another dir and download 2.4.21-ac4 patch and patch the new kernel that you just untarred, and then you copy $2.4.21-ac4kerneldir/arch/i386/kernel/mpparse.c to $2.4.22-pre3-ac1kerneldir/arch/i386/kernel/mpparse.c, then it compiles right. Good luck!
Regards
Signature · 1 line
Markus Hästbacka <[email protected]>
arch/i386/kernel/io_apic.c Mon Jul 7 11:25:07 2003 renamed from arch/i386/kernel/io_apic.c.orig Mon Jul 7 11:06:36 2003 +1 -3
@@ -44,7 +44,6 @@ unsigned int int_dest_addr_mode = APIC_DEST_LOGICAL; unsigned char int_delivery_mode = dest_LowestPrio; -extern unsigned int xapic_support; /* * # of IRQ routing registers
@@ -1208,8 +1207,7 @@ old_id = mp_ioapics[apic].mpc_apicid; - if (!xapic_support && - (mp_ioapics[apic].mpc_apicid >= apic_broadcast_id)) { + if ((mp_ioapics[apic].mpc_apicid >= apic_broadcast_id)) { printk(KERN_ERR "BIOS bug, IO-APIC#%d ID is %d in the MPC
table!...\n",
apic, mp_ioapics[apic].mpc_apicid);
printk(KERN_ERR "... fixing up to %d. (tell your hw vendor)\n",
@@ -1223,8 +1221,7 @@
* 'stuck on smp_invalidate_needed IPI wait' messages.
* I/O APIC IDs no longer have any meaning for xAPICs and SAPICs. */
- if (!xapic_support &&
- (clustered_apic_mode != CLUSTERED_APIC_XAPIC) &&
+ if ((clustered_apic_mode != CLUSTERED_APIC_XAPIC) &&
(phys_id_present_map & (1 << mp_ioapics[apic].mpc_apicid))) {
printk(KERN_ERR "BIOS bug, IO-APIC#%d ID %d is already used!...\n",
apic, mp_ioapics[apic].mpc_apicid);