[U-Boot] Relocation issue - need help!

Andy Fleming afleming at gmail.com
Wed Sep 30 20:24:10 CEST 2015


On Thu, Oct 23, 2014 at 8:10 AM, Wolfgang Denk <wd at denx.de> wrote:
> Dear Joakim, dear Dirk,
>
> In message <OF14C3D470.864842B6-ONC1257D7A.002471AC-C1257D7A.0024DEC4 at transmode.se> you wrote:
>>
>> Ouch, that was a nasty surprise.
>
> Indeed.
>
>> > In my original mail I referenced this potential solution, at least it
>> > worked for me:
>> > https://gcc.gnu.org/ml/gcc-help/2014-02/msg00054.html
>>
>> That looks like the correct fix but I presume both .data.rel.ro and
>> data.rel.ro.local should be added?
>
> I can confirm:
>
> 1) The problem was observed with gcc 4.8.1 [as in Yocto 1.5.x / ELDK
>    5.5.x].
>
> 2) Switching back to gcc 4.7.2 [as in Yocto 1.4 / ELDK 5.4] makes the
>    problem go away.
>
> 3) Switching forward to gcc 4.9.1 [as in Yocto 1.7 / ELDK 5.7] makes
>    the problem go away.
>
> 4) For the problemativ 4.8.x versions of GCC, the following patch
>    apparently solves the problem for my (MPC5200 based) board - guess
>    this would have to be applied to all .lds files...
>
> diff --git a/arch/powerpc/cpu/mpc5xxx/u-boot.lds b/arch/powerpc/cpu/mpc5xxx/u-boot.lds
> index cd9e23f..82c86d7 100644
> --- a/arch/powerpc/cpu/mpc5xxx/u-boot.lds
> +++ b/arch/powerpc/cpu/mpc5xxx/u-boot.lds
> @@ -27,6 +27,8 @@ SECTIONS
>    {
>      _GOT2_TABLE_ = .;
>      KEEP(*(.got2))
> +    KEEP(*(.data.rel.ro))
> +    KEEP(*(.data.rel.ro.local))
>      KEEP(*(.got))
>      PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
>      _FIXUP_TABLE_ = .;
>
> Given that GCC 4.9.1 apparently solves this issue I wonder which
> approach we should take?
>
> Should we blacklist GCC 4.8.x (and 4.9.0) like the kernel folks are
> doing [1] ?
>
> [1] https://lkml.org/lkml/2014/10/10/272

Was there a resolution to this thread? I just spent a bunch of time
trying to figure out why u-boot was crashing, and eventually
determined that switching from 4.9.0 to 4.6.3 solved the problem.
Should I submit a patch to do what was suggested above? Or add the
"blacklist" patch? If so, it should be noted that 4.9.0 is the current
default installed when you ask buildman to install a powerpc cross
compiler...


More information about the U-Boot mailing list