From mboxrd@z Thu Jan 1 00:00:00 1970 From: Albert ARIBAUD Date: Sat, 09 Oct 2010 09:43:38 +0200 Subject: [U-Boot] new uboot with relocation change cannot boot when download the bin file to different address than TEXT_BASE In-Reply-To: References: Message-ID: <4CB01D2A.1000708@free.fr> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Le 09/10/2010 07:50, Lei Wen a ?crit : > Hi, > > I recently try to port our board code to new uboot, which has been > changed to use new relocation scheme. > But I found a very strange thing, that is if the uboot is loaded to > the TEXT_BASE address, it could run without > problem. But if it is loaded to a different place, it fail to boot up... > > I check the code, and found that in the board_init_f, it calls the > init_sequence which is stored as a data sector > in the u-boot.bin file. While the new scheme use the fPIC, the code > could locate the GOT table correctly, > and it seem to forgot what the GOT table stores is context that is > meaningful in TEXT_BASE, not the loaded base. > That is to say, if the TEXT_BASE is 0xf00000, and loaded base is > 0x500000, I found the GOT table also filled > with 0xf0****, not the 0x50****. This leads the cpu loading wrong > function address in the init_sequence table, and > cause pc become invalid... > > Am I missing something to switch to the new relocation scheme? > > Thanks, > Lei Can you indicate which hardware (architecture, cpu, SoC, etc) you're running this code on? Amicalement, -- Albert.