[U-Boot] Question about relocation

Alessandro Rubini rubini-list at gnudd.com
Sun Apr 17 21:30:39 CEST 2011


>> Ori, simply, end-to-beginning when moving up. Or always
>> end-to-beginning since we are expected to always move up (upper than
>> the target address it can't run).
 
> Since the 'issue' is caused by the code assuming one direction, I'd
> prefer it not to assume the other now; I prefer choosing
> end-to-beginning if target is dest than source, beginning-to-end otherwise.

but the calculation is done to move to end of ram, so dest is always
higher than source. 

> Actually no, copying and fixing is not done in a single run. There is
> the copying of the text+data+const area, then the fixing which runs
> through the relocation table area; they are different.

Yes, that's what I meant. It's not a memcpy, you also use the data
after the copy so any overlap is an issue, indepentend of the order
of copying.
 
>> Or, easier: if we are already high enough to overlap, don't relocate
>> at all.  If it's acceptable, I'll patch for taht.

> But then comes the question of how enough is "high enough". :)

If there's no overlap, you can relocate. If the areas overal, you keep
the current address which also is "high enough".

If you ack (even offlist) I'll submit a patch tomorrow (monday)
/alessandro


More information about the U-Boot mailing list