public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Peter Tyser <ptyser@xes-inc.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] PowerPC -mrelocatable
Date: Tue, 08 Sep 2009 11:16:13 -0500	[thread overview]
Message-ID: <1252426573.6005.253.camel@localhost.localdomain> (raw)
In-Reply-To: <4A96C72F.2070806@freescale.com>

On Thu, 2009-08-27 at 12:49 -0500, Scott Wood wrote:
> Peter Tyser wrote:
> > On Thu, 2009-08-27 at 10:38 -0500, Scott Wood wrote:
> >> Someone tried to get proper relocation working a while ago, but ran into
> >> toolchain bugs.  Maybe current toolchains are better...
> > 
> > X-ES's board's in U-Boot fully relocate to SDRAM with the
> > CONFIG_RELOC_FIXUP_WORKS define and -mrelocatable compiler flag.  This
> > feature has worked with gcc-4.3.1/binutils-2.18.90 and
> > gcc-4.2.2/binutils-2.17.50.
> > 
> > Does anyone have a specific example of a toolchain that doesn't work?
> > It'd be great to get the issue figured out and get rid of all those
> > gd->reloc_off references that currently litter the code...
> 
> According to these e-mails:
> http://lists.denx.de/pipermail/u-boot/2007-October/025937.html
> http://lists.denx.de/pipermail/u-boot/2007-October/025941.html
> 
> it worked in (at least some) 4.0, but not (at least some) 3.x or 4.1.

Going over the emails and my own testing, it looks the following
versions worked:
gcc 4.0.0
gcc 4.0.2
gcc 4.1.1, binutils 2.16 (I've verified this)
gcc 4.2.2, binutils 2.17 (I've verified this)
gcc 4.3.1, binutils 2.17 (I've verified this)

And the following didn't:
gcc 3.4.3, glibc 2.3.4, binutils 2.15.94
gcc 4.1.2, glibc 2.5, binutils 2.17 ***
gcc 4.1.78 ***

> If we're now at the point where current GCC works, and has for several 
> releases, we should probably consider revisiting those patches.

I did some debug on gcc 3.4.3/binutils2.3.4/glibc2.15 which was a known
non-working setup on an MPC8548-based board.  I'm 98% sure the the
reason it fails because it doesn't properly generate .fixup sections.
No .fixup sections are present in any of the compiled objects or u-boot.
This results in the link script variable '__fixup_entries' equalling 0,
so no relocation fixups are performed on bootup (eg see line 943 in
cpu/mpc85xx/start.S).

It looks like this was a gcc bug that has been fixed:
http://gcc.gnu.org/ml/gcc-cvs/2004-12/msg00057.html


gcc 4.1.2 and 4.1.78 have the gcc relocation fix in it, so that isn't
the issue for them.  I tried gcc 4.1.2/binutils 2.17 from one of
Freescale's BSPs (looks to be very similar to the one described here:
http://www.freescale.com/files/soft_dev_tools/doc/support_info/BSPMPC5121EADSRN.txt?fsrch=1)
and it actually worked!

I'm guessing that the "broken" versions of gcc 4.1.2 and 4.1.78 are
actually the same Freescale-provided compiler.  The toolchain Freescale
provided is really version 4.1.2, but the path of the compiler contains
"gcc-4.1.78-eglibc-2.5.78-dp-1".  gcc 4.1.78 doesn't exist, so I'm
guessing someone in the threads above was using Freescale's gcc 4.1.2,
but made the mistake of calling it 4.1.78 based on its misleading
install path.

So in summary, there appears to be a bug in gcc for version 3.4.3 which
prevents relocation from working, and I was unable to find any issues
with 4.1.2.  The fact that all 4.0.0, 4.1.1, 4.2.2, 4.3.1 worked also
would lead me to believe 4.1.2 should also work.


Does anyone out there by chance have a failure case for gcc > 4.0.0,
because I can't seem to reproduce the issues others had in the past.

My vote would be to find out which version of gcc contains the
relocation bug and spit out an error if gcc < than that version is used.
We could also try and get fancy and dynamically turn on/off relocation
support at compile time based on gcc's version if other's wanted to
maintain support for older compilers.  These changes would only be for
ppc@this point btw.

Let me know if others have any input.

Best,
Peter

  parent reply	other threads:[~2009-09-08 16:16 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-25  7:02 [U-Boot] Phy lib again Michal Simek
2009-08-25  7:08 ` Stefan Roese
2009-08-25  7:14   ` Michal Simek
2009-08-25 16:48     ` Ben Warren
2009-08-26  7:27       ` Michal Simek
2009-08-25  9:23   ` Jean-Christophe PLAGNIOL-VILLARD
2009-08-26 20:13 ` [U-Boot] [RFC PATCH 1/3] net: rework the mii support Jean-Christophe PLAGNIOL-VILLARD
2009-08-26 20:13   ` [U-Boot] [RFC PATCH 2/3] net: add phylib implementation Jean-Christophe PLAGNIOL-VILLARD
2009-08-26 20:13     ` [U-Boot] [RFC PATCH 3/3] phylib: add generic phy driver Jean-Christophe PLAGNIOL-VILLARD
2009-08-27  1:58       ` Mike Frysinger
2009-08-27  1:55     ` [U-Boot] [RFC PATCH 2/3] net: add phylib implementation Mike Frysinger
2009-08-27  5:11       ` Stefan Roese
2009-08-27  5:54         ` Mike Frysinger
2009-08-27 15:38           ` Scott Wood
2009-08-27 15:56             ` Peter Tyser
2009-08-27 17:49               ` [U-Boot] PowerPC -mrelocatable Scott Wood
2009-08-27 19:36                 ` Joakim Tjernlund
2009-09-08 16:16                 ` Peter Tyser [this message]
2009-09-08 17:29                   ` Mike Frysinger
2009-09-08 18:20                   ` Wolfgang Denk
2009-09-09  8:04                     ` Joakim Tjernlund
2009-09-11 22:52                     ` Peter Tyser
2009-08-27 19:13             ` [U-Boot] [RFC PATCH 2/3] net: add phylib implementation Mike Frysinger
2009-08-27 19:16               ` Scott Wood
2009-08-27  1:16   ` [U-Boot] [RFC PATCH 1/3] net: rework the mii support Mike Frysinger
2009-08-27 15:44   ` Ben Warren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1252426573.6005.253.camel@localhost.localdomain \
    --to=ptyser@xes-inc.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox