From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joakim Tjernlund Date: Wed, 9 Apr 2008 18:19:59 +0200 Subject: [U-Boot-Users] Fixup entries In-Reply-To: <1207752413.6954.52.camel@localhost.localdomain> References: <1207733537.6954.32.camel@localhost.localdomain> <1207740219.5826.71.camel@gentoo-jocke.transmode.se> <1207752413.6954.52.camel@localhost.localdomain> Message-ID: <005a01c89a5d$8e9c67b0$abd53710$@Tjernlund@transmode.se> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de > -----Original Message----- > From: Kenneth Johansson [mailto:kenneth at southpole.se] > Sent: den 9 april 2008 16:47 > To: joakim.tjernlund at transmode.se > Cc: u-boot-users at lists.sourceforge.net > Subject: Re: [U-Boot-Users] Fixup entries > > > On Wed, 2008-04-09 at 13:23 +0200, Joakim Tjernlund wrote: > > On Wed, 2008-04-09 at 11:32 +0200, Kenneth Johansson wrote: > > > What is the fixup section used for ? > > > > > > of the 274 cards that build on my MAKEALL not one has any entries into > > > this section. > > > > These are needed for relocation of function pointers(and possible some > > think more). There was an attempt by Grant Likely to enable this > > functionalty, but some toolchains had problems with so the function > > was disabled. If you undo commit > > 1c3dd43338a077165e7e0309cb3994e65d2bdbf8 you will enable it again for > > powerpc. > > > > Jocke > > aaahhaa so that is how it's working. > > I remember having problem understanding this when I did the command > section and ended up doing a manual relocation of the command table. But > compiling with -mrelocatable and going over the .fixup section instead I > can now remove that extra code and it works fine. > > It's not easy to understand the ABI. > > I removed the -fPIC and only used -mrelocatable and that works too. > > Wonder if there is something else in u-boot that use function pointers > and work by accident due to the fact that the old address in flash is > still valid. Oh yes, there are a few such pointers. And the conversion to using fixups instead is a bit lazy. Several manual relocations has only been nullified by setting gd->reloc_off=0 instead of #ifdef:ing out the relevant code. Feel free to send patches :) Jocke