[U-Boot] FPGA relocation/C environment

Wolfgang Wegner
2009-10-29T12:04:52Z

Dear Wolfgang Denk,

On Thu, Oct 29, 2009 at 12:00:00PM +0100, Wolfgang Denk wrote:
> Dear Wolfgang Wegner,
>
> In message <20091029082113.GE3216@leila.ping.de> you wrote:
> >
> > Now I recognized that commit 6385b28116f775da4771b768ba9bf93c3aaaf26e
> > removed FPGA relocation, which of course breaks FPGA code for my
> > Coldfire board.
>
> This is an out-of-tree port, right? If your code had been in mainline,
> this would not have happened.

I know, as I mentioned in the first place, I am right now updating to
get it integrated. (see below for the footnote)

> > What is the "proper relocation for PPC boards" that is mentioned
> > by Peter in his commit log? I found this test patch by him:
> ...
> > - I do not understand how the compiler could know about the
> > relocation for the FPGA (and possibly other) functions when the
> > actual relocation is done during U-Boot run time?
>
> The compiler / linker create a Global Offset Table (GOT) which
> basicly is a list of offsets to the image, where address constants
> need to be updated to relocate the image to a new address. This is
> what the U-Boot relocation code does: add a (fixed) relocation offset
> (target address - source address) to all the locations listed in the
> GOT. The problem was, that certain types of addresses (statically
> initialized function pointers) did not get listed in the GOT. This is
> now fixed.

Thank you for the clarification! I will see if I can find out in which
state gcc and U-Boot for coldfire are in this respect.

Best regards,
Wolfgang

[At the time of the original port, MCF532x/7x was not present in U-Boot;
my own port had quite many conflicts (probably because of me being still
very unfamiliar with U-Boot and its concepts) with the upcoming official
port, which in turn had some severe problems at least with my setup. This
and the fact that I needed some time to get at least a bit familiar with
git led to me sticking with my old out-of-tree port. Now as the official
MCF537x port is settled I am in the process of doing my homework...]