From mboxrd@z Thu Jan 1 00:00:00 1970 From: Albert ARIBAUD Date: Tue, 05 Oct 2010 13:18:53 +0200 Subject: [U-Boot] [RFC] [PATCH V2] arm: arm926ejs: use ELF relocations In-Reply-To: <4CAB058B.2090800@emk-elektronik.de> References: <1286260287-1571-1-git-send-email-albert.aribaud@free.fr> <20101005064516.AEA4C153A7E@gemini.denx.de> <4CAACE47.5090105@emk-elektronik.de> <4CAAD255.1080501@emk-elektronik.de> <4CAAD944.2040309@emk-elektronik.de> <4CAAE2C5.4040304@denx.de> <4CAAE4BF.3030306@free.fr> <4CAAE949.1010200@denx.de> <4CAAEB84.2070602@emk-elektronik.de> <4CAAECA1.8090903@denx.de> <4CAAEDAE.9040908@emk-elektronik.de> <4CAAEFDF.5080803@denx.de> <4CAAF0E3.20801@emk-elektronik.de> <4CAAF264.6030305@emk-elektronik.de> <4CAAF9D6.6040803@free.fr> <4CAAFFA3.6060602@emk-elektronik.de> <4CAB02A8.1010200@gmail.com> <4CAB058B.2090800@emk-elektronik.de> Message-ID: <4CAB099D.6040703@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 05/10/2010 13:01, Reinhard Meyer a ?crit : > Dear Graeme Russ, >>> .globl _rel_dyn_start_ofs >>> _rel_dyn_start_ofs: >>> .word __rel_dyn_start - _start >>> .globl _rel_dyn_end_ofs >>> _rel_dyn_end_ofs: >>> .word __rel_dyn_end - _start >>> .globl _dynsym_start_ofs >>> _dynsym_start_ofs: >>> .word __dynsym_start - _start >>> >>> get the values to "C". >> >> Odd, is x86 different: >> >> extern ulong _i386boot_rel_dyn_start; >> extern ulong _i386boot_rel_dyn_end; >> >> void board_init_f (ulong stack_limit) >> { >> ... >> Elf32_Rel *rel_dyn_start = (Elf32_Rel *)&_i386boot_rel_dyn_start; >> Elf32_Rel *rel_dyn_end = (Elf32_Rel *)&_i386boot_rel_dyn_end; >> ... > > It can be done that way, too! But above assembly code provides > relative offsets already, in "C" it would turn a bit uglier ;) > (TODO later) For the _rel_dyn_* and _dyn_sym* literals, offsets are mandatory, because their actual value would be always 0 at link time, and only become correct after relocation, which creates a catch-22, since you need these values for relocation. Defining their value as relative to _start instead does not change their relocation type, but it makes their link-time value already correct, and thus makes relocation possible. (/me thinks an update to doc/README.arm-relocation is in order) Amicalement, -- Albert.