From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peng Fan Date: Tue, 20 Oct 2015 15:20:43 +0800 Subject: [U-Boot] [PATCH V2 1/3] arm: discard relocation entry for secure section In-Reply-To: <20151020090532.48426615@lilith> References: <1445320795-2235-1-git-send-email-Peng.Fan@freescale.com> <20151020090532.48426615@lilith> Message-ID: <20151020072039.GA26880@shlinux2> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Albert, On Tue, Oct 20, 2015 at 09:05:32AM +0200, Albert ARIBAUD wrote: >Hello Peng, > >On Tue, 20 Oct 2015 13:59:53 +0800, Peng Fan >wrote: >> The code such as PSCI in section named secure is bundled with >> u-boot image, and when bootm, the code will be copied to their >> runtime address same to compliation/linking address - >> CONFIG_ARMV7_SECURE_BASE. >> >> When compile the PSCI code and link it into the u-boot image, >> there will be relocation entries in .rel.dyn section for PSCI. >> Actually, we do not needs these relocation entries. >> >> If still keep the relocation entries in .rel.dyn section, >> r0 at line 103 and 106 in arch/arm/lib/relocate.S may be an invalid >> address which may not support read/write for one SoC. >> 102 /* relative fix: increase location by offset */ >> 103 add r0, r0, r4 >> 104 ldr r1, [r0] >> 105 add r1, r1, r4 >> 106 str r1, [r0] >> >> So discard the relocation entries for code in secure section. > >Actually, I'll need you to do a slight change -- that's my fault, and >karma even ensured that my own self of two years ago would be the one >to come and kick me. See: > >http://lists.denx.de/pipermail/u-boot/2013-December/168652.html Ok. Then arch/arm/cpu/armv8/u-boot.lds should also have such fix, since lots sections are discarded in u-boot.lds for armv8. > >Which basically is about never discarding any section in the ELF file, >and only copying a subset of the ELF sections into the binary file. > >So rather than discarding the secure relocation records, let's move >them to another section as you had proposed, and thus change the line > >> + /DISCARD/ : { *(.rel._secure*) } > >Into a > > .rel._secure { *(.rel._secure*) } > >Placed right after the already present > > .dynamic : { *(.dynamic*) } It can not be placed after .dynamic, since the following is at front. 87 .rel.dyn : { 88 *(.rel*) 89 } So relocation entry from secure text will first placed into .rel.dyn section. If not DISCARD, then I prefer to put ".rel.secure : { *(.rel._secure*) }" at line 55 which is wrapped by CONFIG_ARMV7_NONSEC in arch/arm/cpu/u-boot.lds. See following patch: