[U-Boot] [PATCH] Fix Freescale link scripts for newer GCCs

Wolfgang Denk wd at denx.de
Wed Feb 18 01:04:48 CET 2009


Dear Kim,

In message <20090216200502.1e25c494.kim.phillips at freescale.com> you wrote:
>
> Trent Piepho <xyzzy at speakeasy.org> wrote:
...
> > But what systems are affected by the problem?  For instance ms7750se only
> > has ".rodata", not even ".rodata.str1.4".  So should it get changed too?
> > 
> > There are CPUs that have a special segment for byte aligned data.  Does
> > u-boot support any of these CPUs?  I don't know.  But changing ".rodata" to
> > ".rodata*" could break a system if ".rodata1" was supposed to be picked up
> > by a ".*data*1" somewhere else in the linker script.  It seems like people
> > who know the platform would be less likely to get caught by this.
> > 
> > Or take something like mpc8220, which has this for a text segment:
> >     *(.text)
> >     *(.fixup)
> >     *(.got1)
> >     . = ALIGN(16);
> >     *(.rodata)
> >     *(.rodata1)
> >     *(.rodata.str1.4)
> >     *(.eh_frame)
> > 
> > Why is the start of rodata aligned to 16 bytes?  I'd guess some sort of I/D
> > cache issue.  Though aren't fixup and got1 data, not code?  I can't
> > find any docs on what the differences between fixup, got, got1, and got2
> > are.  It seems like current gcc only uses got2.  The mpc8220 ld script also
> > lists fixup a second time, in the reloc section, a mistake that probably
> > doesn't break anything since I think gcc hasn't used fixup in some time.
> > 
> > Anyway, not knowing if it's ok to delete fixup and got1, I would change
> > this to:
> >     *(.text)
> >     *(.fixup)
> >     *(.got1)
> >     . = ALIGN(16);
> >     *(.eh_frame)
> >     *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
> > 
> > eh_frame should go before rodata* since it has has a larger alignment, but
> > now rodata isn't 16 byte aligned like it was before.  Does that matter?  I
> > doubt it, but I don't know for sure.
> > 
> 
> WD, do you have a response to the above?   Otherwise, I'll put this
> in my queue:

Please don't. I really want to see this fixed for ALL affected boards,
not only for a small subset so everbody forgets it again and we run
into it later again and again.


Trent - you have  obviously  already  spend  a  lot  of  effort  into
analyzing  this  code - most probably more time than any other of us.
Based on your experience and the effort you already spent I think  it
would be best if you could provided a patch to fix all boards.

Thanks in advance.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"'Tis true, 'tis pity, and pity 'tis 'tis true."
    - Poloniouius, in Willie the Shake's _Hamlet, Prince of Darkness_


More information about the U-Boot mailing list