2002-02-04 00:16:44

by Michal Jaegermann

[permalink] [raw]
Subject: [PATCH] Symbol troubles in 2.4.18pre... kernels


Compiling 2.4.18pre7, and also 2.4.18pre7ac, runs into various troubles
with symbols. Here is what I got more or less accidentally. :-)


A module drivers/char/drm/sis.o ends up with unresolved symbols

depmod: sis_free
depmod: sis_malloc

The trouble is that these modules are exported by drivers/video/sis/sis_main.c
so depmod has valid complaints if the first was configured and the other
not. So this is a source error or a configuration error depending if
these two are supposed to be independent or not.


'isa_eth_io_copy_and_sum' is defined only for some architectures but
assorted modules, like drivers/net/3c503.o and few others, can be
configured, say, for Alpha and 'depmod' once again complains about
unresolved symbols. I do not think that anybody will really miss that
on Alpha but maybe configuring them in should be disallowed?


Some sound modules are using 'mdelay', defined in linux/delay.h,
but are not including this header. Here, at last, the patch is trivial. :-)

--- linux-2.4.18p7/drivers/sound/ymfpci.c~ Fri Dec 21 10:41:55 2001
+++ linux-2.4.18p7/drivers/sound/ymfpci.c Sun Feb 3 16:39:51 2002
@@ -46,6 +46,7 @@
#include <linux/module.h>
#include <linux/init.h>
#include <linux/ioport.h>
+#include <linux/delay.h>
#include <linux/pci.h>
#include <linux/slab.h>
#include <linux/poll.h>
--- linux-2.4.18p7/drivers/sound/opl3sa2.c~ Thu Jan 31 15:29:51 2002
+++ linux-2.4.18p7/drivers/sound/opl3sa2.c Sun Feb 3 16:40:50 2002
@@ -64,6 +64,7 @@
#include <linux/module.h>
#include <linux/isapnp.h>
#include <linux/pm.h>
+#include <linux/delay.h>
#include "sound_config.h"

#include "ad1848.h"

Michal


2002-02-04 00:35:26

by Alan

[permalink] [raw]
Subject: Re: [PATCH] Symbol troubles in 2.4.18pre... kernels

> depmod: sis_malloc
>
> The trouble is that these modules are exported by drivers/video/sis/sis_main.c
> so depmod has valid complaints if the first was configured and the other
> not. So this is a source error or a configuration error depending if
> these two are supposed to be independent or not.

There isnt a good way to fix this in the config language - suggestions
welcome

> 'isa_eth_io_copy_and_sum' is defined only for some architectures but
> assorted modules, like drivers/net/3c503.o and few others, can be
> configured, say, for Alpha and 'depmod' once again complains about
> unresolved symbols. I do not think that anybody will really miss that
> on Alpha but maybe configuring them in should be disallowed?

This is a bug in the Alpha port. Fix the port. Its not ecactly the
most complex function to implement.

> Some sound modules are using 'mdelay', defined in linux/delay.h,
> but are not including this header. Here, at last, the patch is trivial. :-)

Yep - looks good to me

2002-02-04 03:48:28

by Michal Jaegermann

[permalink] [raw]
Subject: Re: [PATCH] Symbol troubles in 2.4.18pre... kernels

On Mon, Feb 04, 2002 at 12:48:12AM +0000, Alan Cox wrote:
>
> > 'isa_eth_io_copy_and_sum' is defined only for some architectures but
> > assorted modules, like drivers/net/3c503.o and few others, can be
> > configured, say, for Alpha and 'depmod' once again complains about
> > unresolved symbols. I do not think that anybody will really miss that
> > on Alpha but maybe configuring them in should be disallowed?
>
> This is a bug in the Alpha port. Fix the port. Its not ecactly the
> most complex function to implement.

Well, the best I can tell by looking at other implementations and
comparing there is not much to implement and the fix looks like
that:

--- linux-2.4.18p7/include/asm-alpha/io.h~ Sun Feb 3 16:42:17 2002
+++ linux-2.4.18p7/include/asm-alpha/io.h Sun Feb 3 20:35:13 2002
@@ -432,6 +432,8 @@
#define eth_io_copy_and_sum(skb,src,len,unused) \
memcpy_fromio((skb)->data,(src),(len))

+#define isa_eth_io_copy_and_sum(a,b,c,d) eth_copy_and_sum((a),(b),(c),(d))
+
static inline int
check_signature(unsigned long io_addr, const unsigned char *signature,
int length)

But I really have no way to test that on a real, live, hardware.
It compiles. :-)

Michal