public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* 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