From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peng Fan Date: Mon, 14 Dec 2015 15:28:56 +0800 Subject: [U-Boot] [RFC V1] arm: config: enforce -fno-pic for gcc In-Reply-To: <1449302026-32675-1-git-send-email-Peng.Fan@freescale.com> References: <1449302026-32675-1-git-send-email-Peng.Fan@freescale.com> Message-ID: <20151214072850.GA22680@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, Do you have any comments on this patch? Regards, Peng. On Sat, Dec 05, 2015 at 03:53:46PM +0800, Peng Fan wrote: >Android's tool chain enable the -mandroid at default. >This option will enable the -fpic, which cause uboot compilation >failure: >" > LD u-boot > u-boot contains unexpected relocations: R_ARM_ABS32 > R_ARM_RELATIVE >" > >In my testcase, arm-linux-androideabi-gcc-4.9 internally >enables '-fpic', so when compiling code, there will be >relocation entries using type R_ARM_GOT_BREL and .got >section. When linking all the built-in.o using ld, there >will be R_ARM_ABS32 relocation entry and .got section >in the final u-boot elf image. This can not be handled >by u-boot, since u-boot only expects R_ARM_RELATIVE >relocation entry. >arm-poky-linux-gnueabi-gcc-4.9 default does not enable '-fpic', >so there is not .got section and R_ARM_GOT_BREL in built-in.o. >And in the final u-boot elf image, all relocation entries are >R_ARM_RELATIVE. > >we can pass '-fno-pic' to xxx-gcc to disable pic. whether >the toolchain internally enables or disables pic, '-fno-pic' >can work well. > >Signed-off-by: Peng Fan >Cc: Albert Aribaud >--- > arch/arm/config.mk | 1 + > 1 file changed, 1 insertion(+) > >diff --git a/arch/arm/config.mk b/arch/arm/config.mk >index 0550225..2b6322a 100644 >--- a/arch/arm/config.mk >+++ b/arch/arm/config.mk >@@ -106,6 +106,7 @@ ALL-y += checkarmreloc > # instruction. Relocation is not supported for that case, so disable > # such usage by requiring word relocations. > PLATFORM_CPPFLAGS += $(call cc-option, -mword-relocations) >+PLATFORM_CPPFLAGS += $(call cc-option, -fno-pic) > endif > > # limit ourselves to the sections we want in the .bin. >-- >2.6.2 > > --