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.