Re: alpha compile failure (srm_printk)

From: Sam Ravnborg
Date: Sat Jul 28 2007 - 16:03:58 EST


On Sat, Jul 28, 2007 at 08:05:08PM +0300, Meelis Roos wrote:
> Retested this compile error with todays 2.6.23-rc1+git, still the same.
>
> > > LD arch/alpha/boot/bootloader
> > > arch/alpha/boot/bootloader.lds:25: undefined symbol `srm_printk' referenced in expression
> >
> > I was unable to repeoduce these errors on 2.6.22-rc4 with your config.
>
> Hmm. Just make works, make bootimage does not. I debugged this further
> today and I can not see how it can work.
>
> The link command in question is
> ld -static -uvsprintf -T arch/alpha/boot/bootloader.lds arch/alpha/boot/head.o arch/alpha/boot/main.o -o arch/alpha/boot/bootloader
> and it still tells
> arch/alpha/boot/bootloader.lds:25: undefined symbol `srm_printk' referenced in expression
>
> arch/alpha/boot/bootloader.lds contains a single related line referring
> to srm_printk:
> printk = srm_printk;
> This only seems to define an alias to srm_printk so not important (and
> unused)?

Hi Meelis.
I took the time to investige this a bit. The relevant files in
this case (arch/alpha/MAkefile + boot/Makefile has not seen many changes
when browsing the git tree.
So I looked back a bit further in the bitkeeper based tree.

Before boot/Makefile were converted to kbuild style bootloader indeed
referenced $(LIBS). That was lost in the process.
So adding $(LIBS_Y) is the right thing to do.

The linker error you get is due to kasprintf uses kmalloc and
it gets pulled in when srm_printf uses vsprintf.

The fix is to split kasprintf out to a separate file to
avoid pulling in more stuff than necessary.

PS. I had trouble compiling objstrip and had to due a lot of ugly
hacks before it compiles. I assume it is a toolchain issue..

Sam
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/