Hi Tom I think, it does for now. Eventually, it might be interesting to see if u-boot could be compiled as static PIE, looking at the code generated by gcc for arm/beaglebone, there is additional penalty since arm gcc is reloading pc-relative addresses, putting an extra slot in the constant pool each time which can be significant if we use small functions as seems to be the case in u-boot.
Thanks -KhemOn Thu, Oct 18, 2018 at 7:09 AM Tom Rini <[email protected]> wrote: > > On Wed, Oct 17, 2018 at 10:49:46PM -0700, Khem Raj wrote: > > some OE distros can default to hardened toolchains which means PIE is > > added implicitly to compiler cmdline, here this options makes sure that > > whattever the default toolchain are, u-boot is not impacted > > > > Fixes errors e.g. > > > > | arm-yoe-linux-gnueabi-ld.bfd: u-boot-spl section `.rodata' will not fit > > in region `.sram' > > | arm-yoe-linux-gnueabi-ld.bfd: region `.sram' overflowed by 5772 bytes > > > > Signed-off-by: Khem Raj <[email protected]> > > Cc: Tom Rini <[email protected]> > > Cc: Denys Dmytriyenko <[email protected]> > > --- > > .../0001-Always-build-with-fno-PIE.patch | 35 +++++++++++++++++++ > > .../u-boot/u-boot-ti-staging_2018.01.bb | 2 ++ > > 2 files changed, 37 insertions(+) > > create mode 100644 > > recipes-bsp/u-boot/files/0001-Always-build-with-fno-PIE.patch > > > > diff --git a/recipes-bsp/u-boot/files/0001-Always-build-with-fno-PIE.patch > > b/recipes-bsp/u-boot/files/0001-Always-build-with-fno-PIE.patch > > new file mode 100644 > > index 00000000..dfd99c66 > > --- /dev/null > > +++ b/recipes-bsp/u-boot/files/0001-Always-build-with-fno-PIE.patch > > @@ -0,0 +1,35 @@ > > +From ec81bbe3ea7e077512f4b9d2b4aa87e7f1494bcc Mon Sep 17 00:00:00 2001 > > +From: Khem Raj <[email protected]> > > +Date: Wed, 17 Oct 2018 22:32:57 -0700 > > +Subject: [PATCH] Always build with -fno-PIE > > + > > +GNU Toolchains can be configured to generate PIE by default > > +while PIE could be ok, it is known that u-boot/SPL on ARM starts to > > +generate bigger code and starts to overflow the SRAM size, therefore > > +disabling PIE explcitly insulates against toolchain intrinsic defaults > > + > > +Fixes errors like > > +| arm-yoe-linux-gnueabi-ld.bfd: u-boot-spl section `.rodata' will not fit > > in region `.sram' > > +| arm-yoe-linux-gnueabi-ld.bfd: region `.sram' overflowed by 5772 bytes > > + > > +Signed-off-by: Khem Raj <[email protected]> > > +Cc: Tom Rini <[email protected]> > > +--- > > + Makefile | 1 + > > + 1 file changed, 1 insertion(+) > > + > > +diff --git a/Makefile b/Makefile > > +index 45cd751ba3..9eb8ac564e 100644 > > +--- a/Makefile > > ++++ b/Makefile > > +@@ -592,6 +592,7 @@ KBUILD_CFLAGS += -O2 > > + endif > > + > > + KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) > > ++KBUILD_CFLAGS += $(call cc-option,-fno-PIE) > > + KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks) > > + > > + KBUILD_CFLAGS += -g > > +-- > > +2.19.1 > > + > > diff --git a/recipes-bsp/u-boot/u-boot-ti-staging_2018.01.bb > > b/recipes-bsp/u-boot/u-boot-ti-staging_2018.01.bb > > index cbb8857a..c9c97111 100644 > > --- a/recipes-bsp/u-boot/u-boot-ti-staging_2018.01.bb > > +++ b/recipes-bsp/u-boot/u-boot-ti-staging_2018.01.bb > > @@ -5,3 +5,5 @@ PR = "r24" > > BRANCH = "ti-u-boot-2018.01" > > > > SRCREV = "2cc52408bf1357f11b96548e78223a1df321c1ae" > > + > > +SRC_URI += "file://0001-Always-build-with-fno-PIE.patch" > > So does this end up being something that is appropriate to push > upstream? Thanks! > > -- > Tom -- _______________________________________________ meta-ti mailing list [email protected] https://lists.yoctoproject.org/listinfo/meta-ti
