2.4.21-rc1 compile fails on serveraid
Subsystems (3)
[..snip..]drivers/scsi/scsidrv.o: In function `ips_insert_device':
drivers/scsi/scsidrv.o(.text.init+0x352): undefined reference to `local symbols in discarded section .text.exit'
make[1]: *** [vmlinux] Error 1
make[1]: Leaving directory `/usr/src/linux'
make: *** [stamp-build] Error 2
And running http://kernelnewbies.org/scripts/reference_discarded.pl
north:/usr/src/linux# perl /root/reference_discarded.pl Finding objects, 401 objects, ignoring 0 module(s) Finding conglomerates, ignoring 32 conglomerate(s) Scanning objects Error: ./drivers/scsi/ips.o .text.init refers to 000000a2 R_386_PC32 .text.exit Done
Signature · 2 lines
Toni Viemerö | http://selfdestruct.net "When you start to doubt yourself the real world will eat you alive."
Quoted 11 lines · Toni Viemero
[..snip..]
drivers/scsi/scsidrv.o: In function `ips_insert_device':
drivers/scsi/scsidrv.o(.text.init+0x352): undefined reference to `local symbols in discarded section .text.exit'
make[1]: *** [vmlinux] Error 1
make[1]: Leaving directory `/usr/src/linux'
make: *** [stamp-build] Error 2And running http://kernelnewbies.org/scripts/reference_discarded.pl
Quoted 7 lines
north:/usr/src/linux# perl /root/reference_discarded.pl Finding objects, 401 objects, ignoring 0 module(s) Finding conglomerates, ignoring 32 conglomerate(s) Scanning objects Error: ./drivers/scsi/ips.o .text.init refers to 000000a2 R_386_PC32 .text.exit Done
__devinit ips_insert_device calls __devexit ips_remove_device. The patch below fixes it be removing the __devexit from ips_remove_device.
I've tested the compilation with 2.4.21-rc1.
cu
Adrian
drivers/scsi/ips.c renamed from drivers/scsi/ips.c.old +8 -11
@@ -246,9 +246,6 @@#define IPS_SG_ADDRESS (sg) ((sg)->address)#define IPS_LOCK_SAVE (lock,flags) spin_lock_irqsave(&io_request_lock,flags)#define IPS_UNLOCK_RESTORE (lock,flags) spin_unlock_irqrestore(&io_request_lock,flags) -#ifndef __devexit_p -#define __devexit_p (x) x -#endif #else #define IPS_SG_ADDRESS (sg) (page_address((sg)->page) ? \ page_address((sg)->page)+(sg)->offset : 0)
@@ -338,48 +335,48 @@static char ips_hot_plug_name[] ="ips" ;static int __devinit ips_insert_device (struct pci_dev *pci_dev,const struct pci_device_id *ent); - static void __devexit ips_remove_device(struct pci_dev *pci_dev); +static void ips_remove_device (struct pci_dev *pci_dev);struct pci_driver ips_pci_driver = { name: ips_hot_plug_name, id_table: ips_pci_table, probe: ips_insert_device, - remove:__devexit_p (ips_remove_device), + remove: ips_remove_device, };struct pci_driver ips_pci_driver_anaconda = { name: ips_hot_plug_name, id_table: ips_pci_table_anaconda, probe: ips_insert_device, - remove:__devexit_p (ips_remove_device), + remove: ips_remove_device, };struct pci_driver ips_pci_driver_5i = { name: ips_hot_plug_name, id_table: ips_pci_table_5i, probe: ips_insert_device, - remove:__devexit_p (ips_remove_device), + remove: ips_remove_device, };struct pci_driver ips_pci_driver_6i = { name: ips_hot_plug_name, id_table: ips_pci_table_6i, probe: ips_insert_device, - remove:__devexit_p (ips_remove_device), + remove: ips_remove_device, };struct pci_driver ips_pci_driver_i960 = { name: ips_hot_plug_name, id_table: ips_pci_table_i960, probe: ips_insert_device, - remove:__devexit_p (ips_remove_device), + remove: ips_remove_device, };struct pci_driver ips_pci_driver_adaptec = { name: ips_hot_plug_name, id_table: ips_pci_table_adaptec, probe: ips_insert_device, - remove:__devexit_p (ips_remove_device), + remove: ips_remove_device, };#endif
@@ -7346,7 +7343,7 @@/* Routine Description: */ /* Remove one Adapter ( Hot Plugging ) */ /*---------------------------------------------------------------------------*/ -static void __devexit ips_remove_device(struct pci_dev *pci_dev) +static void ips_remove_device (struct pci_dev *pci_dev) {int i;struct Scsi_Host *sh;