Hi Tom, > -----Original Message----- > From: Tom Rini [mailto:tr...@konsulko.com] > Sent: Tuesday, July 04, 2017 12:17 AM > To: Peng Fan <peng....@nxp.com>; Simon Glass <s...@chromium.org>; Philipp > Tomsich <philipp.toms...@theobroma-systems.com> > Cc: albert.u.b...@aribaud.net; u-boot@lists.denx.de > Subject: Re: [U-Boot] [PATCH 2/2] arm: config: enforce -fno-pic for SPL and > normal U-Boot > > On Mon, Jul 03, 2017 at 09:14:08PM +0800, Peng Fan wrote: > > > If not pass -fno-pic to toolchains, some toolchains may generate .got > > and .got.plt sections, but when generate binaries, we did not take > > .got and .got.plt into consideration, then SPL or normal U-Boot boot > > failure because image corrupted. > > > > Need to pass -fno-pic to disable generating .got and .got.plt > > sections. > > > > Signed-off-by: Peng Fan <peng....@nxp.com> > > Cc: Albert Aribaud <albert.u.b...@aribaud.net> > > Cc: Tom Rini <tr...@konsulko.com> > > --- > > arch/arm/config.mk | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/arch/arm/config.mk b/arch/arm/config.mk index > > 1a77779..66ae403 100644 > > --- a/arch/arm/config.mk > > +++ b/arch/arm/config.mk > > @@ -130,9 +130,10 @@ 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 > > > > +PLATFORM_CPPFLAGS += $(call cc-option, -fno-pic) > > + > > # limit ourselves to the sections we want in the .bin. > > ifdef CONFIG_ARM64 > > OBJCOPYFLAGS += -j .text -j .secure_text -j .secure_data -j .rodata > > -j .data \ > > Something is "up" here and I need you to dig harder and perhaps see if we're > missing something in the linker scripts? The very next line of context here > is: > -j .u_boot_list -j .rela.dyn -j .got -j .got.plt > > Meaning that we intentionally copy .got / .got.plt into the resulting binary. > And > I see that we took in 397d7d5a1be1 from you back in 2016 saying that we > needed this in SPL. But 5a942a152776 put the got/got.plt sections (for 32bit > ARM) in intentionally as some relocations do need it. And in 4b0d506ed3b4 > Philipp seems to have seen the same problem you have, but fixed it with > adding got/got.plt to the sections list we copy in (the above hunk of > context).
If pass -fno-pic to compiler, there will be no .got and .got.plt sections. The .got and .got.plt is usually used for dynamic link, such as linux "*.so" file. We need to pass -fno-pic to compiler to remove .got and .got.plt sections. Thanks, Peng. > > -- > Tom _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot