From mboxrd@z Thu Jan 1 00:00:00 1970 From: Albert ARIBAUD Date: Tue, 10 Jul 2012 08:16:24 +0200 Subject: [U-Boot] [PATCH 2/2] arm: work around assembler bug In-Reply-To: References: <1341896898-6102-1-git-send-email-amartin@nvidia.com> <1341896898-6102-2-git-send-email-amartin@nvidia.com> Message-ID: <20120710081624.17dd8cf6@lilith> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Graeme and Allen, On Tue, 10 Jul 2012 15:13:47 +1000, Graeme Russ wrote: > Hi Martin, > > On Tue, Jul 10, 2012 at 3:08 PM, Allen Martin 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 > > --- > > arch/arm/config.mk | 20 ++++++++++++++++++++ > > 1 file changed, 20 insertions(+) > > > > diff --git a/arch/arm/config.mk b/arch/arm/config.mk > > index 3f4453a..1ba9d75 100644 > > --- a/arch/arm/config.mk > > +++ b/arch/arm/config.mk > > @@ -87,3 +87,23 @@ endif > > ifndef CONFIG_NAND_SPL > > LDFLAGS_u-boot += -pie > > endif > > + > > +# > > +# 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 yes; else echo no; fi) > > y instead of yes > > > +ifeq ($(GAS_BUG_12532),yes) > > So: > > ifeq ($(GAS_BUG_12532),y) > > is more consistent > > > +$(warning *** disabling sibling call optimzation because binutils version < 2.22) > > Maybe add 'code size will be (slightly) larger' "could be" rather than "will be" ? > > > +endif > > +endif > > +ifeq ($(GAS_BUG_12532),yes) > > +PLATFORM_RELFLAGS += -fno-optimize-sibling-calls > > +endif > > +endif > > -- > > 1.7.9.5 > > If a new patch version is out and Tested-by: soon, I am willing to take this in. > Regards, > > Graeme Amicalement, -- Albert.