[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <AANLkTilcHe8jnIBcTC_FjLPGxIbuZV3snU4u0FtdoeDi@mail.gmail.com>
Date: Fri, 18 Jun 2010 16:27:31 +0200
From: Geert Uytterhoeven <geert@...ux-m68k.org>
To: richard -rw- weinberger <richard.weinberger@...il.com>
Cc: akpm@...ux-foundation.org, tabbott@...lice.com,
linux-kernel@...r.kernel.org, Jeff Dike <jdike@...toit.com>,
user-mode-linux-devel@...ts.sourceforge.net, stable@...nel.org
Subject: Re: [RESEND][REGRESSION] um: CONFIG_STATIC_LINK=y broken
On Fri, Jun 18, 2010 at 15:49, richard -rw- weinberger
<richard.weinberger@...il.com> 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@...lice.com>
> Date: Mon, Jan 4, 2010 at 10:08 PM
> Subject: [REGRESSION] um: CONFIG_STATIC_LINK=y broken
> To: Linus Torvalds <torvalds@...ux-foundation.org>
> Cc: linux-kernel@...r.kernel.org, Jeff Dike <jdike@...toit.com>,
> user-mode-linux-devel@...ts.sourceforge.net, stable@...nel.org,
> richard -rw- weinberger <richard.weinberger@...il.com>, Sam Ravnborg
> <sam@...nborg.org>
>
>
> 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@...lice.com>
> Reported-by: richard -rw- weinberger <richard.weinberger@...il.com>
> Cc: Jeff Dike <jdike@...toit.com>
> Cc: user-mode-linux-devel@...ts.sourceforge.net
> ---
> 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@...ux-m68k.org
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@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists