section .data..init_task
Sam Ravnborg
sam at ravnborg.org
Tue Jul 13 18:54:19 EST 2010
On Mon, Jul 12, 2010 at 08:34:35PM -0400, Sean MacLennan wrote:
> On Mon, 28 Jun 2010 00:59:00 -0400
> Sean MacLennan <smaclennan at pikatech.com> wrote:
>
> > Anybody else seeing these messages?
> >
> > ppc_4xxFP-ld: .tmp_vmlinux1: section .data..init_task lma 0xc0374000
> > overlaps previous sections ppc_4xxFP-ld: .tmp_vmlinux2:
> > section .data..init_task lma 0xc03a2000 overlaps previous sections
> > ppc_4xxFP-ld: vmlinux: section .data..init_task lma 0xc03a2000
> > overlaps previous sections
> >
> > Or does anybody know what they mean? They started showing up in
> > 2.6.35.
> >
> > Very easy to reproduce, so don't hesitate to ask for more info.
>
> I had a bit of time, so I tracked this down. This patch seems to be
> the culprit: http://lkml.org/lkml/2010/2/19/366
>
> Specifically, this code:
>
> /* The initial task and kernel stack */
> - .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
> - INIT_TASK_DATA(THREAD_SIZE)
> - }
> + INIT_TASK_DATA_SECTION(THREAD_SIZE)
>
> If I change it back to:
>
> /* The initial task and kernel stack */
> .data..init_task : AT(ADDR(.data..init_task) - LOAD_OFFSET) {
> INIT_TASK_DATA(THREAD_SIZE)
> }
>
> not only do the warnings go away, but the kernel now boots again!
It looks like a missing AT() in the output section.
The following patch should also fix it.
Please test and let us know.
Thanks,
Sam
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index 48c5299..3c4bf03 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -435,7 +435,7 @@
*/
#define INIT_TASK_DATA_SECTION(align) \
. = ALIGN(align); \
- .data..init_task : { \
+ .data..init_task : AT(ADDR(.data..init_task) - LOAD_OFFSET) { \
INIT_TASK_DATA(align) \
}
More information about the Linuxppc-dev
mailing list