On 07/18/2012 11:06 PM, Albert ARIBAUD wrote: > Hi Allen, > > On Wed, 18 Jul 2012 16:45:53 -0700, Allen Martin <amar...@nvidia.com> wrote: >> Disable sibling call optimization based on binutils version. This is >> to work around a bug in the assember in binutils versions < 2.22. >> Branches to weak symbols can be incorrectly optimized in thumb mode to >> a short branch (b.n instruction) that won't reach when the symbol gets >> preempted. >> >> http://sourceware.org/bugzilla/show_bug.cgi?id=12532 >> >> Signed-off-by: Allen Martin <amar...@nvidia.com> >> --- >> changes for v4: >> -removed warning print >> changes for v3: >> -split shell line to improve readability >> changes for v2: >> -changed GAS_BUG_12532 from yes/no to y/n to be consistent >> -added additional warning about code size increase >> --- >> arch/arm/config.mk | 18 ++++++++++++++++++ >> 1 file changed, 18 insertions(+) >> >> diff --git a/arch/arm/config.mk b/arch/arm/config.mk >> index 3f4453a..24b9d7c 100644 >> --- a/arch/arm/config.mk >> +++ b/arch/arm/config.mk >> @@ -87,3 +87,21 @@ endif >> ifndef CONFIG_NAND_SPL >> LDFLAGS_u-boot += -pie >> endif >> + >> +# >> +# FIXME: binutils versions < 2.22 have a bug in the assembler where >> +# branches to weak symbols can be incorrectly optimized in thumb mode >> +# to a short branch (b.n instruction) that won't reach when the symbol >> +# gets preempted >> +# >> +# http://sourceware.org/bugzilla/show_bug.cgi?id=12532 >> +# >> +ifeq ($(CONFIG_SYS_THUMB_BUILD),y) >> +ifeq ($(GAS_BUG_12532),) >> +export GAS_BUG_12532:=$(shell if [ $(call binutils-version) -lt 0222 ] ; \ >> + then echo y; else echo n; fi) >> +endif >> +ifeq ($(GAS_BUG_12532),y) >> +PLATFORM_RELFLAGS += -fno-optimize-sibling-calls >> +endif >> +endif > > Can previous reviewers ack or test this? I would like to have it in the ARM > master branch in time for 12.07.
Acked-by: Tom Rini <tr...@ti.com> -- Tom _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot