On Wed, 18 Feb 2009 15:22:05 -0800 Trent Piepho <tpie...@freescale.com> wrote:
> From: Trent Piepho <xy...@speakeasy.org> > > A recent gcc added a new unaligned rodata section called '.rodata.str1.1', > which needs to be added the the linker script. Instead of just adding this > one section, we use a wildcard ".rodata*" to get all rodata linker section > gcc has now and might add in the future. > > However, '*(.rodata*)' by itself will result in sub-optimal section > ordering. The sections will be sorted by object file, which causes extra > padding between the unaligned rodata.str.1.1 of one object file and the > aligned rodata of the next object file. This is easy to fix by using the > SORT_BY_ALIGNMENT command. > > This patch has not be tested one most of the boards modified. Some boards > have a linker script that looks something like this: > > *(.text) > . = ALIGN(16); > *(.rodata) > *(.rodata.str1.4) > *(.eh_frame) > > I change this to: > > *(.text) > . = ALIGN(16); > *(.eh_frame) > *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) > > This means the start of rodata will no longer be 16 bytes aligned. > However, the boundary between text and rodata/eh_frame is still aligned to > 16 bytes, which is what I think the real purpose of the ALIGN call is. > > Signed-off-by: Trent Piepho <xy...@speakeasy.org> > --- This fixes my problem, and I can't find anything wrong with it upon visual inspection, so: A-Big-Huge-Signed-off-by: Kim Phillips <kim.phill...@freescale.com> thanks Trent, I owe you a beer. Kim _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot