* Re: 2.4.25pre6 and qlogic pcmcia driver [not found] <200401180355.01190.arekm@pld-linux.org> @ 2004-01-20 16:01 ` Marcelo Tosatti 2004-01-20 18:11 ` Randy.Dunlap 0 siblings, 1 reply; 3+ messages in thread From: Marcelo Tosatti @ 2004-01-20 16:01 UTC (permalink / raw) To: Arkadiusz Miskiewicz; +Cc: Marcelo Tosatti, linux-kernel, Erik Andersen Same here, 2.4.24 does not show this behaviour. I can't find the guilty modification in 2.4.25-pre. On Sun, 18 Jan 2004, Arkadiusz Miskiewicz wrote: > Hi, > > I was compiling 2.4.25pre6 (_but_ with bunch of different patches) with > almost everything modular and got this: > > ake[1]: Wej?cie do katalogu `/home/users/misiek/rpm/BUILD/linux-2.4.24/drivers/scsi/pcmcia' > gcc -D__KERNEL__ -I/home/users/misiek/rpm/BUILD/linux-2.4.24/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=athlon -DMODULE -nostdinc -iwithprefix include -DKBUILD_BASENAME=qlogic_stub -c -o qlogic_stub.o qlogic_stub.c > gcc -D__KERNEL__ -I/home/users/misiek/rpm/BUILD/linux-2.4.24/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=athlon -DMODULE -nostdinc -iwithprefix include -DKBUILD_BASENAME=qlogicfas -DPCMCIA -D__NO_VERSION__ -c -o qlogicfas.o ../qlogicfas.c > ../qlogicfas.c: In function `qlogicfas_detect': > ../qlogicfas.c:650: warning: passing arg 1 of `scsi_unregister' from incompatible pointer type > ld -m elf_i386 -r -o qlogic_cs.o qlogic_stub.o qlogicfas.o > qlogicfas.o(.text+0xe50): In function `init_module': > : multiple definition of `init_module' > qlogic_stub.o(.text+0x860): first defined here > ld: Warning: size of symbol `init_module' changed from 86 in qlogic_stub.o to 75 in qlogicfas.o > qlogicfas.o(.text+0xea0): In function `cleanup_module': > : multiple definition of `cleanup_module' > qlogic_stub.o(.text+0x8c0): first defined here > ld: Warning: size of symbol `cleanup_module' changed from 47 in qlogic_stub.o to 27 in qlogicfas.o > make[1]: *** [qlogic_cs.o] B??d 1 > > qlogic_cs module is going to be build using drivers/scsi/pcmcia/qlogic_stub.c > and drivers/scsi/qlogicfas.c. ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: 2.4.25pre6 and qlogic pcmcia driver 2004-01-20 16:01 ` 2.4.25pre6 and qlogic pcmcia driver Marcelo Tosatti @ 2004-01-20 18:11 ` Randy.Dunlap 2004-01-21 1:32 ` Arkadiusz Miskiewicz 0 siblings, 1 reply; 3+ messages in thread From: Randy.Dunlap @ 2004-01-20 18:11 UTC (permalink / raw) To: Marcelo Tosatti; +Cc: arekm, marcelo.tosatti, linux-kernel, andersen On Tue, 20 Jan 2004 14:01:54 -0200 (BRST) Marcelo Tosatti <marcelo.tosatti@cyclades.com> wrote: | | | Same here, 2.4.24 does not show this behaviour. | | I can't find the guilty modification in 2.4.25-pre. Same problem with aha152x pcmcia being built as a module. I also don't see any changes that would be causing this... It's clear that this problem should be detected, since scsi/qlogicfas.c and scsi/pcmcia/qlogic_stub.c both #include <linux/init.h>, so both of them define the module init and cleanup functions. I don't see how this worked in the past, unless it was due to some tools that missed detecting the duplicated functions. | On Sun, 18 Jan 2004, Arkadiusz Miskiewicz wrote: | | > Hi, | > | > I was compiling 2.4.25pre6 (_but_ with bunch of different patches) with | > almost everything modular and got this: | > | > ake[1]: Wej?cie do katalogu `/home/users/misiek/rpm/BUILD/linux-2.4.24/drivers/scsi/pcmcia' | > gcc -D__KERNEL__ -I/home/users/misiek/rpm/BUILD/linux-2.4.24/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=athlon -DMODULE -nostdinc -iwithprefix include -DKBUILD_BASENAME=qlogic_stub -c -o qlogic_stub.o qlogic_stub.c | > gcc -D__KERNEL__ -I/home/users/misiek/rpm/BUILD/linux-2.4.24/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=athlon -DMODULE -nostdinc -iwithprefix include -DKBUILD_BASENAME=qlogicfas -DPCMCIA -D__NO_VERSION__ -c -o qlogicfas.o ../qlogicfas.c | > ../qlogicfas.c: In function `qlogicfas_detect': | > ../qlogicfas.c:650: warning: passing arg 1 of `scsi_unregister' from incompatible pointer type | > ld -m elf_i386 -r -o qlogic_cs.o qlogic_stub.o qlogicfas.o | > qlogicfas.o(.text+0xe50): In function `init_module': | > : multiple definition of `init_module' | > qlogic_stub.o(.text+0x860): first defined here | > ld: Warning: size of symbol `init_module' changed from 86 in qlogic_stub.o to 75 in qlogicfas.o | > qlogicfas.o(.text+0xea0): In function `cleanup_module': | > : multiple definition of `cleanup_module' | > qlogic_stub.o(.text+0x8c0): first defined here | > ld: Warning: size of symbol `cleanup_module' changed from 47 in qlogic_stub.o to 27 in qlogicfas.o | > make[1]: *** [qlogic_cs.o] B??d 1 | > | > qlogic_cs module is going to be build using drivers/scsi/pcmcia/qlogic_stub.c | > and drivers/scsi/qlogicfas.c. | - -- ~Randy kernel-janitors project: http://janitor.kernelnewbies.org/ ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: 2.4.25pre6 and qlogic pcmcia driver 2004-01-20 18:11 ` Randy.Dunlap @ 2004-01-21 1:32 ` Arkadiusz Miskiewicz 0 siblings, 0 replies; 3+ messages in thread From: Arkadiusz Miskiewicz @ 2004-01-21 1:32 UTC (permalink / raw) To: Randy.Dunlap; +Cc: Marcelo Tosatti, linux-kernel, andersen Dnia wto 20. stycznia 2004 19:11, Randy.Dunlap napisał: > On Tue, 20 Jan 2004 14:01:54 -0200 (BRST) Marcelo Tosatti <marcelo.tosatti@cyclades.com> wrote: > | Same here, 2.4.24 does not show this behaviour. > | > | I can't find the guilty modification in 2.4.25-pre. > > Same problem with aha152x pcmcia being built as a module. > > I also don't see any changes that would be causing this... > > It's clear that this problem should be detected, since > scsi/qlogicfas.c and scsi/pcmcia/qlogic_stub.c both > #include <linux/init.h>, so both of them define the module > init and cleanup functions. I don't see how this worked > in the past, unless it was due to some tools that missed > detecting the duplicated functions. This change causes whole problem: diff -Naur -p -X /home/marcelo/lib/dontdiff linux-2.4.24/include/linux/spinlock.h linux-2.4.25-pre6/include/linux/spinlock.h --- linux-2.4.24/include/linux/spinlock.h 2002-11-28 23:53:15.000000000 +0000 +++ linux-2.4.25-pre6/include/linux/spinlock.h 2004-01-16 12:20:45.000000000 +0000 @@ -3,6 +3,8 @@ #include <linux/config.h> +#include <asm/system.h> + /* * These are the generic versions of the spinlocks and read-write * locks.. The difference between 2.4.23 after preprocessing is: static Scsi_Host_Template driver_template = { detect: qlogicfas_detect, release: qlogicfas_release, info: qlogicfas_info, co mmand: qlogicfas_command, queuecommand: qlogicfas_queuecommand, abort: qlogicfas_abort, reset: qlogicfas_reset, bios_param: qlogicfas_biosparam, can_queue: 0, this_id: -1, sg_tablesize: 0xff, cmd_per_lun: 1, use_clustering: 0 }; # 1 "scsi_module.c" 1 # 35 "scsi_module.c" static int __attribute__ ((__section__ (".text.init"))) init_this_scsi_driver(void) { driver_template.module = (&__this_module); scsi_register_module(1, &driver_template); if (driver_template.present) return 0; scsi_unregister_module(1, &driver_template); return -19; } static void __attribute__ ((unused, __section__(".text.exit"))) exit_this_scsi_driver(void) { scsi_unregister_module(1, &driver_template); } static initcall_t __initcall_init_this_scsi_driver __attribute__ ((unused,__section__ (".initcall.init"))) = init_this_scsi_ driver;; static exitcall_t __exitcall_exit_this_scsi_driver __attribute__ ((unused,__section__ (".exitcall.exit"))) = exit_this_scsi_ driver;; and on 2.4.25pre6: static Scsi_Host_Template driver_template = { detect: qlogicfas_detect, release: qlogicfas_release, info: qlogicfas_info, co mmand: qlogicfas_command, queuecommand: qlogicfas_queuecommand, abort: qlogicfas_abort, reset: qlogicfas_reset, bios_param: qlogicfas_biosparam, can_queue: 0, this_id: -1, sg_tablesize: 0xff, cmd_per_lun: 1, use_clustering: 0 }; # 1 "scsi_module.c" 1 # 35 "scsi_module.c" static int init_this_scsi_driver(void) { driver_template.module = (&__this_module); scsi_register_module(1, &driver_template); if (driver_template.present) return 0; scsi_unregister_module(1, &driver_template); return -19; } static void exit_this_scsi_driver(void) { scsi_unregister_module(1, &driver_template); } int init_module(void) __attribute__((alias("init_this_scsi_driver"))); static __inline__ __attribute__((always_inline)) __at tribute__((always_inline)) __init_module_func_t __init_module_inline(void) { return init_this_scsi_driver; }; void cleanup_module(void) __attribute__((alias("exit_this_scsi_driver"))); static __inline__ __attribute__((always_inline)) __attribute__((always_inline)) __cleanup_module_func_t __cleanup_module_inline(void) { return exit_this_scsi_driver; }; # 723 "qlogicfas.c" 2 The problem is because in 2.4.25pre6 we have MODULE defined and drivers/scsi/qlogicfas.c -> #include <linux/module.h> include/linux/moduleh -> #include <linux/spinlock.h> include/linux/spinlock.h -> #include <asm/system.h> include/asm/system.h -> #include <linux/init.h> as MODULE is defined then wrong functions are taken (we want these for undefined MODULE to be taken later) then back in drivers/scsi/qlogicfas.c #ifdef PCMCIA #undef MODULE #endif and again #include <linux/init.h> this time with MODULE undefined -- Arkadiusz Miśkiewicz CS at FoE, Wroclaw University of Technology arekm.pld-linux.org AM2-6BONE, 1024/3DB19BBD, arekm(at)ircnet, PLD/Linux ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2004-01-21 1:33 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <200401180355.01190.arekm@pld-linux.org>
2004-01-20 16:01 ` 2.4.25pre6 and qlogic pcmcia driver Marcelo Tosatti
2004-01-20 18:11 ` Randy.Dunlap
2004-01-21 1:32 ` Arkadiusz Miskiewicz
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox