mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-04-11 00:41:31 +00:00
arm: work around assembler bug
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 <amartin@nvidia.com> Acked-by: Tom Rini <trini@ti.com>
This commit is contained in:
parent
2051ff3450
commit
0f20bb601f
1 changed files with 18 additions and 0 deletions
|
@ -87,3 +87,21 @@ endif
|
||||||
ifndef CONFIG_NAND_SPL
|
ifndef CONFIG_NAND_SPL
|
||||||
LDFLAGS_u-boot += -pie
|
LDFLAGS_u-boot += -pie
|
||||||
endif
|
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
|
||||||
|
|
Loading…
Add table
Reference in a new issue