On Wed, Apr 24, 2002 at 02:11:36PM -0700, Geoffrey Espin wrote:
> On Wed, Apr 24, 2002 at 02:01:56PM -0700, H . J . Lu wrote:
> > That is a kernel bug which has been fixed in the newer kernel. From my
> > binutils release note:
> > Changes from binutils 2.11.92.0.10:
> > 1. Update from binutils 2001 1121.
> > 2. Fix a linker symbol version bug for common symbols.
> > 3. Update handling relocations against the discarded sections. You may
> > need to apply the kernel patch enclosed here to your kernel source. If
> > you still see things like
> > drivers/char/char.o(.data+0x46b4): undefined reference to `local symbols in
> > discarded
> > section .text.exit'
> > in the final kernel link, that means you have compiled a driver into
> > the kernel which has a reference to the symbol in a discarded section.
> > Kernel 2.4.17 or above should work fine.
> > H.J.
>
> Sorry, I should have specified my kernel *IS* recently (Monday)
> from linux-mips.sourceforge.net. And it was previously sync'd
> to oss.sgi.com on Sunday, 21Apr02.
>
Your kernel still have references to symbols in discarded sections. Please
read linux/include/linux/init.h:
/* Functions marked as __devexit may be discarded at kernel link time, depending
on config options. Newer versions of binutils detect references from
retained sections to discarded sections and flag an error. Pointers to
__devexit functions must use __devexit_p(function_name), the wrapper will
insert either the function_name or NULL, depending on the config options.
*/
#if defined(MODULE) || defined(CONFIG_HOTPLUG)
#define __devexit_p(x) x
#else
#define __devexit_p(x) NULL
#endif
H.J.
|