lkml.org 
[lkml]   [2010]   [Jan]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: "m68k: Cleanup linker scripts using new linker script macros." and old binutils (was: Re: [PATCH] m68k: Atari EtherNAT - Nicolas Pitre has a new email address)
Hi Andreas,

> > FWIW: when stripping the new kernel, I get this warning:
> >
> > BFD: st7CwWnM: warning: allocated section `.init_end' not in segment
>
> This is actually your problem. The .init_end section is kind of special
> because it only contains an ALIGN. What do you get from running
> "readelf -l vmlinux"?

Followup on this: You are absolutely right - the problem appears to be related
to the the .init_end section _only_ having the ALIGN, and nothing else (i.e.
no actual section content).

Placing the align in the .m68k_fixup section like such:

--- arch/m68k/kernel/vmlinux-std.lds.org 2010-01-09 11:01:05.000000000
+1300
+++ arch/m68k/kernel/vmlinux-std.lds 2010-01-12 08:43:07.000000000 +1300
@@ -42,6 +42,7 @@
__start_fixup = .;
*(.m68k_fixup)
__stop_fixup = .;
+ . = ALIGN(PAGE_SIZE);
}
NOTES
.init_end : {
still puts .init_end, __init_end and _end on a page boundary, but also extends
the load section up to that page boundary. (Unfortunately, it also extends the
kernel file size by a bit).

Can the same be achieved in a more elegant way? The reason why the old script
worked with my binutils appears to be the placement of the initramfs data right
at the end - the start of initramfs is page aligned, and the size of the
initramfs is an integer number of pages, so the end of initramfs data,
__init_end and _end all are on a page boundary. With the fixup section now
placed after the initramfs explicitly, this no longer happens by accident...

Cheers,

Michael




\
 
 \ /
  Last update: 2010-01-11 21:11    [W:0.079 / U:0.312 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site