lkml.org 
[lkml]   [2001]   [Dec]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patches in this message
/
Date
From
SubjectSome compiler warnings in 2.4.17-pre5
Hi,

below follow some compiler warnings I got while trying to compile a
kernel with as much as possible statically linked into the kernel with
the snapshot of gcc-2.95.4 that is in Debian unstable. If possible these
should be corrected because either
- there's a bug or
- it confuses to see a warning although there's not a bug

Because the list is very long I've listed only some of the warnings and
one compile error with some comments and suggested patches I made. Others
will come later.

I didn't include the two compile errors in the ISDN code for which there
were already patches sent to this list.

I do send an explicite Cc to all the persons that seem to be responsible
for a piece of code listed below. If you wonder why you got a Cc or if you
disagree with Cc'ing you please send me a private mail.

Any comments are welcome.


...
drivers/net/net.o: In function `deflate':
drivers/net/net.o(.text+0xc3dcc): multiple definition of `deflate'
fs/fs.o(.text+0x10134c): first defined here
drivers/net/net.o: In function `_tr_flush_block':
drivers/net/net.o(.text+0xc633c): multiple definition of `_tr_flush_block'
fs/fs.o(.text+0x1038bc): first defined here
drivers/net/net.o: In function `zlibVersion':
drivers/net/net.o(.text+0xc9c20): multiple definition of `zlibVersion'
fs/fs.o(.text+0x1071a0): first defined here
drivers/net/net.o: In function `inflate_trees_free':
...

[both jffs2 and ppp have own copies of zlib]


...
make[3]: Entering directory `/mnt/kernel/linux/drivers/cdrom'
...
gcc -D__KERNEL__ -I/mnt/kernel/linux/include -Wall -Wstrict-prototypes -Wno-trig
raphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferre
d-stack-boundary=2 -march=k6 -c -o mcdx.o mcdx.c
In file included from mcdx.c:81:
mcdx.h:180: warning: #warning You have not edited mcdx.h
mcdx.h:181: warning: #warning Perhaps irq and i/o settings are wrong.


At about two years ago when I used this driver I made the attached patch
to configure these settings via "make *config". It's perhaps possible to
do it more elegant but it was working and the patch does still apply.


...
make[4]: Entering directory `/mnt/kernel/linux/drivers/char/agp'
...
gcc -D__KERNEL__ -I/mnt/kernel/linux/include -Wall -Wstrict-prototypes -Wno-trig
raphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferre
d-stack-boundary=2 -march=k6 -DEXPORT_SYMTAB -c agpgart_be.c
agpgart_be.c:1543: warning: `intel_820_cleanup' defined but not used

[intel_820_setup calls intel_cleanup instead of intel_820_cleanup;
is this a bug or is intel_820_cleanup obsolete?]


...
make[4]: Entering directory `/mnt/kernel/linux/drivers/net/fc'
gcc -D__KERNEL__ -I/mnt/kernel/linux/include -Wall -Wstrict-prototypes -Wno-trig
raphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferre
d-stack-boundary=2 -march=k6 -c -o iph5526.o iph5526.c
iph5526.c:227: warning: `driver_template' defined but not used


[all uses of `driver_template' are in an "#ifdef MODULE" section]
--- drivers/net/fc/iph5526.c.~ Sun Sep 30 21:26:08 2001
+++ drivers/net/fc/iph5526.c Fri Dec 7 00:17:13 2001
@@ -224,7 +224,9 @@
static int get_scsi_oxid(struct fc_info *fi);
static void update_scsi_oxid(struct fc_info *fi);

+#ifdef MODULE
static Scsi_Host_Template driver_template = IPH5526_SCSI_FC;
+#endif /* MODULE */

static void iph5526_timeout(struct net_device *dev);

...
make[4]: Entering directory `/mnt/kernel/linux/drivers/net/irda'
...
gcc -D__KERNEL__ -I/mnt/kernel/linux/include -Wall -Wstrict-prototypes -Wno-trig
raphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferre
d-stack-boundary=2 -march=k6 -c -o w83977af_ir.o w83977af_ir.c
w83977af_ir.c:276: warning: `w83977af_close' defined but not used

[all uses of `w83977af_close' are in an "#ifdef MODULE" section]
--- drivers/net/irda/w83977af_ir.c.old Fri Dec 7 23:44:42 2001
+++ drivers/net/irda/w83977af_ir.c Fri Dec 7 23:45:52 2001
@@ -90,7 +90,9 @@
/* Some prototypes */
static int w83977af_open(int i, unsigned int iobase, unsigned int irq,
unsigned int dma);
+#ifdef MODULE
static int w83977af_close(struct w83977af_ir *self);
+#endif /* MODULE */
static int w83977af_probe(int iobase, int irq, int dma);
static int w83977af_dma_receive(struct w83977af_ir *self);
static int w83977af_dma_receive_complete(struct w83977af_ir *self);
@@ -266,6 +268,8 @@
return 0;
}

+#ifdef MODULE
+
/*
* Function w83977af_close (self)
*
@@ -314,6 +318,8 @@

return 0;
}
+
+#endif /* MODULE */

int w83977af_probe( int iobase, int irq, int dma)
{


...
make[4]: Entering directory `/mnt/kernel/linux/drivers/net/tokenring'
...
gcc -D__KERNEL__ -I/mnt/kernel/linux/include -Wall -Wstrict-prototypes -Wno-trig
raphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferre
d-stack-boundary=2 -march=k6 -c -o tmsisa.o tmsisa.c
tmsisa.c:44: warning: `portlist' defined but not used


[all uses of `portlist' are in an "#ifdef MODULE" section]
--- drivers/net/tokenring/tmsisa.c.old Fri Dec 7 23:36:24 2001
+++ drivers/net/tokenring/tmsisa.c Fri Dec 7 23:37:18 2001
@@ -40,11 +40,15 @@

#define TMS_ISA_IO_EXTENT 32

+#ifdef MODULE
+
/* A zero-terminated list of I/O addresses to be probed. */
static unsigned int portlist[] __initdata = {
0x0A20, 0x1A20, 0x0B20, 0x1B20, 0x0980, 0x1980, 0x0900, 0x1900,// SK
0
};
+
+#endif /* MODULE */

/* A zero-terminated list of IRQs to be probed.
* Used again after initial probe for sktr_chipset_init, called from sktr_open.


...
make[3]: Entering directory `/mnt/kernel/linux/drivers/net'
...
gcc -D__KERNEL__ -I/mnt/kernel/linux/include -Wall -Wstrict-prototypes -Wno-trig
raphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferre
d-stack-boundary=2 -march=k6 -c -o winbond-840.o winbond-840.c
winbond-840.c:146: warning: `version' defined but not used


[all uses of `version' are in an "#ifdef MODULE" section]
--- drivers/net/winbond-840.c.old Fri Dec 7 23:38:21 2001
+++ drivers/net/winbond-840.c Fri Dec 7 23:38:56 2001
@@ -142,10 +142,14 @@
#include <asm/io.h>
#include <asm/irq.h>

+#ifdef MODULE
+
/* These identify the driver base version and may not be removed. */
static char version[] __devinitdata =
KERN_INFO DRV_NAME ".c:v" DRV_VERSION " (2.4 port) " DRV_RELDATE " Donald Becker <becker@scyld.com>\n"
KERN_INFO " http://www.scyld.com/network/drivers.html\n";
+
+#endif /* MODULE */

MODULE_AUTHOR("Donald Becker <becker@scyld.com>");
MODULE_DESCRIPTION("Winbond W89c840 Ethernet driver");


...
gcc -D__KERNEL__ -I/mnt/kernel/linux/include -Wall -Wstrict-prototypes -Wno-trig
raphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferre
d-stack-boundary=2 -march=k6 -DEXPORT_SYMTAB -c arlan.c
arlan.c:26: warning: `probe' defined but not used
arlan.c:1128: warning: `arlan_find_devices' defined but not used


[all uses of `probe' and `arlan_find_devices' are in an
"#ifdef MODULE" section]
--- drivers/net/arlan.c.old Fri Dec 7 23:40:00 2001
+++ drivers/net/arlan.c Fri Dec 7 23:40:52 2001
@@ -23,7 +23,9 @@
static char *siteName = siteNameUNKNOWN;
static int mem = memUNKNOWN;
int arlan_debug = debugUNKNOWN;
+#ifdef MODULE
static int probe = probeUNKNOWN;
+#endif /* MODULE */
static int numDevices = numDevicesUNKNOWN;
static int spreadingCode = spreadingCodeUNKNOWN;
static int channelNumber = channelNumberUNKNOWN;
@@ -1124,6 +1126,8 @@
return -ENODEV;
}

+#ifdef MODULE
+
static int __init arlan_find_devices(void)
{
int m;
@@ -1142,6 +1146,7 @@
return found;
}

+#endif /* MODULE */

static int arlan_change_mtu(struct net_device *dev, int new_mtu)
{


...
make[3]: Entering directory `/mnt/kernel/linux/drivers/net/hamradio'
...
gcc -D__KERNEL__ -I/mnt/kernel/linux/include -Wall -Wstrict-prototypes -Wno-trig
raphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferre
d-stack-boundary=2 -march=k6 -c -o 6pack.o 6pack.c
6pack.c:703: warning: `msg_invparm' defined but not used

[`msg_invparm' is never used]
--- drivers/net/hamradio/6pack.c.old Fri Dec 7 23:41:59 2001
+++ drivers/net/hamradio/6pack.c Fri Dec 7 23:42:19 2001
@@ -700,7 +700,6 @@
/* Initialize 6pack control device -- register 6pack line discipline */

static char msg_banner[] __initdata = KERN_INFO "AX.25: 6pack driver, " SIXPACK_VERSION " (dynamic channels, max=%d)\n";
-static char msg_invparm[] __initdata = KERN_ERR "6pack: sixpack_maxdev parameter too large.\n";
static char msg_nomem[] __initdata = KERN_ERR "6pack: can't allocate sixpack_ctrls[] array! No 6pack available.\n";
static char msg_regfail[] __initdata = KERN_ERR "6pack: can't register line discipline (err = %d)\n";

...
make[3]: Entering directory `/mnt/kernel/linux/drivers/scsi'
...
gcc -D__KERNEL__ -I/mnt/kernel/linux/include -Wall -Wstrict-prototypes -Wno-trig
raphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferre
d-stack-boundary=2 -march=k6 -c -o qla1280.o qla1280.c
qla1280.c:1615: warning: `qla1280_do_dpc' defined but not used

[the only call of this function is in the else path of an
"#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,95)"; it seems to be a bit
strange that these "if"s also appears inside qla1280_do_dpc, IOW there's
code in this function that will neither be called in a kernel < 2.1.95
nor in a kernel >= 2.1.95]


...
gcc -D__KERNEL__ -I/mnt/kernel/linux/include -Wall -Wstrict-prototypes -Wno-trig
raphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferre
d-stack-boundary=2 -march=k6 -c -o i60uscsi.o i60uscsi.c
i60uscsi.c: In function `__orc_alloc_scb':
i60uscsi.c:643: warning: unused variable `flags'


[`flags' is never used in this function]
--- drivers/scsi/i60uscsi.c.old Fri Dec 7 23:43:13 2001
+++ drivers/scsi/i60uscsi.c Fri Dec 7 23:43:34 2001
@@ -640,7 +640,6 @@
ULONG idx;
UCHAR index;
UCHAR i;
- ULONG flags;

Ch = hcsp->HCS_Index;
for (i = 0; i < 8; i++) {



cu
Adrian

--

Get my GPG key: finger bunk@debian.org | gpg --import
Fingerprint: B29C E71E FE19 6755 5C8A 84D4 99FC EA98 4F12 B400
diff -u -r linux.old/drivers/cdrom/Config.in linux/drivers/cdrom/Config.in
--- linux.old/drivers/cdrom/Config.in Tue Jan 11 22:33:46 2000
+++ linux/drivers/cdrom/Config.in Tue Jan 11 22:38:40 2000
@@ -19,6 +19,32 @@
hex 'MCD I/O base' CONFIG_MCD_BASE 300
fi
tristate ' Mitsumi [XA/MultiSession] CDROM support' CONFIG_MCDX
+if [ "$CONFIG_MCDX" != "n" ]; then
+choice 'Number of CDROM drives' \
+ "1 CONFIG_NUMBER_MCDX1 \
+ 2 CONFIG_NUMBER_MCDX2 \
+ 3 CONFIG_NUMBER_MCDX3 \
+ 4 CONFIG_NUMBER_MCDX4 \
+ 5 CONFIG_NUMBER_MCDX5 " 1
+ int 'MCDX IRQ drive 1' CONFIG_MCDX_IRQ1 11
+ hex 'MCDX I/O base drive 1' CONFIG_MCDX_BASE1 300
+ if [ "$CONFIG_NUMBER_MCDX1" = "n" ]; then
+ int 'MCDX IRQ drive 2' CONFIG_MCDX_IRQ2 5
+ hex 'MCDX I/O base drive 2' CONFIG_MCDX_BASE2 304
+ if [ "$CONFIG_NUMBER_MCDX2" = "n" ]; then
+ int 'MCDX IRQ drive 3' CONFIG_MCDX_IRQ3 0
+ hex 'MCDX I/O base drive 3' CONFIG_MCDX_BASE3 000
+ if [ "$CONFIG_NUMBER_MCDX3" = "n" ]; then
+ int 'MCDX IRQ drive 4' CONFIG_MCDX_IRQ4 0
+ hex 'MCDX I/O base drive 4' CONFIG_MCDX_BASE4 000
+ if [ "$CONFIG_NUMBER_MCDX4" = "n" ]; then
+ int 'MCDX IRQ drive 5' CONFIG_MCDX_IRQ5 0
+ hex 'MCDX I/O base drive 5' CONFIG_MCDX_BASE5 000
+ fi
+ fi
+ fi
+ fi
+fi
tristate ' Optics Storage DOLPHIN 8000AT CDROM support' CONFIG_OPTCD
tristate ' Philips/LMS CM206 CDROM support' CONFIG_CM206
tristate ' Sanyo CDR-H94A CDROM support' CONFIG_SJCD
diff -u -r linux.old/drivers/cdrom/mcdx.h linux/drivers/cdrom/mcdx.h
--- linux.old/drivers/cdrom/mcdx.h Tue Jan 11 22:33:46 2000
+++ linux/drivers/cdrom/mcdx.h Tue Jan 11 22:34:25 2000
@@ -54,13 +54,57 @@
* NOTE: I didn't get a drive at irq 9(2) working. Not even alone.
*/
#if MCDX_AUTOPROBE == 0
- #define MCDX_NDRIVES 1
+
+/*
+ * The right CONFIG_NUMBER_MCDXx is set by the Configure script.
+ */
+#if CONFIG_NUMBER_MCDX1
+ #define MCDX_NDRIVES 1
+ #else
+ #if CONFIG_NUMBER_MCDX2
+ #define MCDX_NDRIVES 2
+ #else
+ #if CONFIG_NUMBER_MCDX3
+ #define MCDX_NDRIVES 3
+ #else
+ #if CONFIG_NUMBER_MCDX4
+ #define MCDX_NDRIVES 4
+ #else
+ #define MCDX_NDRIVES 5
+ #endif
+ #endif
+ #endif
+#endif
+
+/*
+ * Some (unimportant) values may be undefined after Configure.
+ */
+#ifndef CONFIG_MCDX_BASE2
+#define CONFIG_MCDX_BASE2 0
+#define CONFIG_MCDX_IRQ2 0
+#endif
+
+#ifndef CONFIG_MCDX_BASE3
+#define CONFIG_MCDX_BASE3 0
+#define CONFIG_MCDX_IRQ3 0
+#endif
+
+#ifndef CONFIG_MCDX_BASE4
+#define CONFIG_MCDX_BASE4 0
+#define CONFIG_MCDX_IRQ4 0
+#endif
+
+#ifndef CONFIG_MCDX_BASE5
+#define CONFIG_MCDX_BASE5 0
+#define CONFIG_MCDX_IRQ5 0
+#endif
+
#define MCDX_DRIVEMAP { \
- {0x300, 11}, \
- {0x304, 05}, \
- {0x000, 00}, \
- {0x000, 00}, \
- {0x000, 00}, \
+ {CONFIG_MCDX_BASE1, CONFIG_MCDX_IRQ1}, \
+ {CONFIG_MCDX_BASE2, CONFIG_MCDX_IRQ2}, \
+ {CONFIG_MCDX_BASE3, CONFIG_MCDX_IRQ3}, \
+ {CONFIG_MCDX_BASE4, CONFIG_MCDX_IRQ4}, \
+ {CONFIG_MCDX_BASE5, CONFIG_MCDX_IRQ5}, \
}
#else
#error Autoprobing is not implemented yet.
@@ -74,10 +118,6 @@
#define MCDX_DEBUG 0
#endif

-/* *** make the following line uncommented, if you're sure,
- * *** all configuration is done */
-/* #define I_WAS_HERE */
-
/* The name of the device */
#define MCDX "mcdx"

@@ -174,12 +214,5 @@
#define MCDX_E 1 /* unspec error */
#define MCDX_ST_EOM 0x0100 /* end of media */
#define MCDX_ST_DRV 0x00ff /* mask to query the drive status */
-
-#ifndef I_WAS_HERE
-#ifndef MODULE
-#warning You have not edited mcdx.h
-#warning Perhaps irq and i/o settings are wrong.
-#endif
-#endif

/* ex:set ts=4 sw=4: */
\
 
 \ /
  Last update: 2005-03-22 13:13    [W:1.090 / U:0.168 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site