[U-Boot] [PATCH] board_r - fixup functions table after relocation

Albert ARIBAUD albert.u.boot at aribaud.net
Thu Jan 16 21:27:15 CET 2014


Hi Alexey,

On Thu, 16 Jan 2014 17:48:45 +0000, Alexey Brodkin
<Alexey.Brodkin at synopsys.com> wrote:

> On Wed, 2014-01-15 at 22:43 +0100, Albert ARIBAUD wrote:
> > Hi Alexey,
> > 
> > On Wed, 15 Jan 2014 15:19:56 +0400, Alexey Brodkin
> > <Alexey.Brodkin at synopsys.com> wrote:
> > 
> > > "init_sequence_r" is just an array that consists of compile-time
> > > adresses of init functions. Since this is basically an array of integers
> > > (pointers to "void" to be more precise) it won't be modified during
> > > relocation - it will be just copied to new location as it is.
> > 
> > IIRC, in ARM we switched from GOT to ELF relocation precisely so that
> > data would be relocated as well as code, and I think it actually is,
> > otherwise we'd have a lot of complains. Therefore I fail to understand
> > the statements above. Can someone tell me what I'm getting wrong?
> 
> Unfortunately I don't have any supported in U-Boot ARM board handy and
> run U-boot on another architecture at all (Synopsys DesignWare ARC) so
> I'm not sure if on ARM functions from "init_sequence_r" list are
> executed from "RAM" (i.e. from location where they were relocated).

Yes, they are.

> I use GOT relocation and see following outputs.

GOT relocation does not relocate references within data, contrary
to ELF.

> Maybe it's just my faulty implementation of relocation but it might be
> that nobody ever noticed this because I think only initcalls are
> affected.

Well, initcalls are quite essential, I guess.

When you say "my faulty implementation of relocation"... do you mean
some implementation different from what is currently in mainline?

> -Alexey

Amicalement,
-- 
Albert.


More information about the U-Boot mailing list