[U-Boot] FPGA relocation/C environment

Wolfgang Denk
2009-10-29T11:00:00Z

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.

> 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.

Best regards,

Wolfgang Denk

--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"Remember, Information is not knowledge; Knowledge is not Wisdom;
Wisdom is not truth; Truth is not beauty; Beauty is not love; Love is
not music; Music is the best." - Frank Zappa