On Fri, 15 Feb 2002, Rob Byrnes wrote:
> I'm running a Cariolet and trying to use make-kpkg to build a new kernel
> from the 2.4.14 package. I'm getting the following error:
>
> /usr/src/kernel-source-2.4.14# fakeroot make-kpkg --added-patches
> ext3-fs --revision custom.1.0 kernel_image
>
> section .text.exit'
> fs/fs.o(.exitcall.exit+0x18): more undefined references to `local symbols in
> dis
> carded section .text.exit' follow
> make[1]: *** [vmlinux] Error 1
> make[1]: Leaving directory `/usr/src/kernel-source-2.4.14'
>
> I have tried removing the ext3-fs patch, but the failure happens at the same
> point.
>
> Any clues?
Let me guess: unstable or woody (definitely not stable) :-)
The problem is that the kernel's linker script discards the .text.exit
section, but some of the code in the kernel is trying to reference
symbols that are in that section (wrongly so, btw). Binutils upstream
recently tightened down on linking such binaries (it now doesn't let it
happen, whereas before it would just keep quiet and link), thereby fixing
what many considered a bug in the linker.
If you want a quick way around it, edit arch/alpha/vmlinux.lds.in and
delete the *(.text.exit) entry in the DISCARD line. It's not the optimal
solution, but it works in every case and I've been recommending it over
sending everyone a more properly-constructed patch for simplicity's sake.
FYI, you should've gotten a debconf warning on your latest binutils
upgrade (if you're up to -6 or -7) that mentioned this...if not, let me
know. If you're not sure if you did or not...don't let me know :-P
C