Re: [RESEND][REGRESSION] um: CONFIG_STATIC_LINK=y broken

From: Geert Uytterhoeven
Date: Fri Jun 18 2010 - 10:27:39 EST


On Fri, Jun 18, 2010 at 15:49, richard -rw- weinberger
<richard.weinberger@xxxxxxxxx> wrote:
> Andrew, Linus, Jeff, ... anyone?
> Please apply this patch.
>
> CONFIG_STATIC_LINK is still broken. :(

I wanted to verify Tim's patch, but after enabling CONFIG_STATIC_LINK,
it fails to link
(with or without your patch):

LD .tmp_vmlinux1
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/libc.a(elf-init.o):
In function `__libc_csu_irel':(.text+0xd4): undefined reference to
`__rela_iplt_end'
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/libc.a(elf-init.o):
In function `__libc_csu_irel':
(.text+0xe5): undefined reference to `__rela_iplt_start'
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/libc.a(elf-init.o):
In function `__libc_csu_irel':
(.text+0x100): undefined reference to `__rela_iplt_start'
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/libc.a(elf-init.o):
In function `__libc_csu_irel':
(.text+0x10a): undefined reference to `__rela_iplt_start'
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/libc.a(elf-init.o):
In function `__libc_csu_irel':
(.text+0x10f): undefined reference to `__rela_iplt_start'
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/libc.a(elf-init.o):
In function `__libc_csu_irel':
(.text+0x114): undefined reference to `__rela_iplt_start'
collect2: ld returned 1 exit status
KSYM .tmp_kallsyms1.S
nm: '.tmp_vmlinux1': No such file
No valid symbol.
make[3]: *** [.tmp_kallsyms1.S] Error 1
make[2]: *** [sub-make] Error 2
make[1]: *** [all] Error 2
make: *** [all] Error 2

This is 2.6.35-rc3 with the hweight fix.
With CONFIG_STATIC_LINK=n, it works fine.

>
> //richard
> ---------- Forwarded message ----------
> From: Tim Abbott <tabbott@xxxxxxxxxxx>
> Date: Mon, Jan 4, 2010 at 10:08 PM
> Subject: [REGRESSION] um: CONFIG_STATIC_LINK=y broken
> To: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> Cc: linux-kernel@xxxxxxxxxxxxxxx, Jeff Dike <jdike@xxxxxxxxxxx>,
> user-mode-linux-devel@xxxxxxxxxxxxxxxxxxxxx, stable@xxxxxxxxxx,
> richard -rw- weinberger <richard.weinberger@xxxxxxxxx>, Sam Ravnborg
> <sam@xxxxxxxxxxxx>
>
>
> Hi Linus,
>
> The following patch fixes a regression that I caused in 2.6.32 when
> cleaning up the um architecture's linker scripts.
>
> I've not heard anything from the um maintainers (they have had since
> Richard Weinberger reported that this patch fixed the problem on December
> 22), so I'm sending this to you now (and CCing stable@ since it affects
> 2.6.32).
>
> Â Â Â Â-Tim Abbott
>
> --
>
> um: remove PAGE_SIZE alignment in linker script causing kernel segfault.
>
> The linker script cleanup that I did in commit
> 5d150a97f9391f5bcd7ba0d59d7a11c3de3cea80 accidentally introduced an
> ALIGN(PAGE_SIZE) when converting to use INIT_TEXT_SECTION; Richard
> Weinberger reported that this causes the kernel to segfault with
> CONFIG_STATIC_LINK=y.
>
> I'm not certain why this extra alignment is a problem, but it seems likely
> it is because previously
>
> __init_begin = _stext = _text = _sinittext
>
> and with the extra ALIGN(PAGE_SIZE), _sinittext becomes different from the
> rest. ÂSo there is likely a bug here where something is assuming that
> _sinittext is the same as one of those other symbols. ÂBut reverting the
> accidental change fixes the regression, so it seems worth committing that
> now.
>
> Signed-off-by: Tim Abbott <tabbott@xxxxxxxxxxx>
> Reported-by: richard -rw- weinberger <richard.weinberger@xxxxxxxxx>
> Cc: Jeff Dike <jdike@xxxxxxxxxxx>
> Cc: user-mode-linux-devel@xxxxxxxxxxxxxxxxxxxxx
> ---
> Âarch/um/kernel/uml.lds.S | Â Â2 +-
> Â1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/arch/um/kernel/uml.lds.S b/arch/um/kernel/uml.lds.S
> index e7a6cca..664f942 100644
> --- a/arch/um/kernel/uml.lds.S
> +++ b/arch/um/kernel/uml.lds.S
> @@ -22,7 +22,7 @@ SECTIONS
> Â _text = .;
> Â _stext = .;
> Â __init_begin = .;
> - ÂINIT_TEXT_SECTION(PAGE_SIZE)
> + ÂINIT_TEXT_SECTION(0)
> Â . = ALIGN(PAGE_SIZE);

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
--
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/