Re: [PATCH] x86-64: fix build with older binutils

From: Jan Beulich
Date: Wed May 06 2009 - 02:58:00 EST


>>> Sam Ravnborg <sam@xxxxxxxxxxxx> 05.05.09 18:39 >>>
>I like the way your patch simplies the linker scrip for x86.
>We have recently merged the linker scripts for 32 and 64 bit,
>and I tried to apply your patch on top of the unified version.
>(Applied manually obviously).
>
>With a 64 bit defconfig build I got:
>/home/sam/x-tools/x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu-ld: section .vsyscall_0 [00000000016c6000 -> >00000000016c60e7] overlaps section .init.rodata [00000000016c5a00 -> 00000000016c6348]
>make[1]: *** [.tmp_vmlinux1] Error 1
>
>I did not try to build a kernel with your original patch.
>
>Can you spot anything obvious wrong in my patch.
>It is on top of x86/kbuild in -tip.

Yeah, the placement of .init.start appears to be wrong - it should the
SMP/x86-64 case of the per-CPU segment, and it should also be the
one getting the :init attached. Hopefully that won't get us back to the
binutils problem I was originally encountering - what is the extra .init.start
section good for anyway? And why does __init_end continue to live
outside of any section (this sort of thing causes problems with
CONFIG_RELOCATABLE and older binutils afair, as such symbols get
marked absolute by the latter)? While this was the case (and a mistake)
for x86-64 prior to the merge, it was properly placed in a section for
ix86, and hence I'd view it as a regression there.

Btw., why is .data.nosave being placed differently for 32- and 64-bit?

Jan

--
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/