[U-Boot] FPGA relocation/C environment

Wolfgang Denk wd at denx.de
Thu Oct 29 12:00:00 CET 2009


Dear Wolfgang Wegner,

In message <20091029082113.GE3216 at 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


More information about the U-Boot mailing list