Patchwork section .data..init_task

login
register
mail settings
Submitter Sam Ravnborg
Date July 13, 2010, 8:54 a.m.
Message ID <20100713085419.GA5826@merkur.ravnborg.org>
Download mbox | patch
Permalink /patch/58719/
State Not Applicable
Headers show

Comments

Sam Ravnborg - July 13, 2010, 8:54 a.m.
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@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
Sean MacLennan - July 13, 2010, 3:26 p.m.
On Tue, 13 Jul 2010 10:54:19 +0200
Sam Ravnborg <sam@ravnborg.org> wrote:

> 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

Applied the patch and it solves the problem. Thanks.

Cheers,
   Sean
Sam Ravnborg - July 13, 2010, 3:33 p.m.
On Tue, Jul 13, 2010 at 11:26:10AM -0400, Sean MacLennan wrote:
> On Tue, 13 Jul 2010 10:54:19 +0200
> Sam Ravnborg <sam@ravnborg.org> wrote:
> 
> > 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
> 
> Applied the patch and it solves the problem. Thanks.

Thanks for the quick feedback!

	Sam

Patch

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)					\
 	}