diff options
author | Jeroen Hofstee <jeroen@myspectrum.nl> | 2013-08-24 13:55:38 +0200 |
---|---|---|
committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-09-23 14:36:50 +0200 |
commit | 373d79839451de08c3dce9231a133178378c4590 (patch) | |
tree | cd6c2c2780a1d51eb9f05d0a5b1105cc0821c841 | |
parent | ad31ff6a4f5e420637da256e8d259bc0c63b0d2b (diff) | |
download | u-boot-imx-373d79839451de08c3dce9231a133178378c4590.zip u-boot-imx-373d79839451de08c3dce9231a133178378c4590.tar.gz u-boot-imx-373d79839451de08c3dce9231a133178378c4590.tar.bz2 |
arm: prevent using movt/movw address loads
The movt/movw instruction can be used to hardcode an
memory location in the instruction itself. The linker
starts complaining about this if the compiler decides
to do so: "relocation R_ARM_MOVW_ABS_NC against `a local
symbol' can not be used" and it is not support by U-boot
as well. Prevent their use by requiring word relocations.
This allows u-boot to be build at other optimalization
levels then -Os.
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
Cc: TigerLiu@viatech.com.cn
Cc: Albert ARIBAUD <albert.u.boot@aribaud.net>
Acked-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | arch/arm/config.mk | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/arm/config.mk b/arch/arm/config.mk index ce3903b..19451ba 100644 --- a/arch/arm/config.mk +++ b/arch/arm/config.mk @@ -94,7 +94,11 @@ PLATFORM_RELFLAGS += -fno-optimize-sibling-calls endif endif -# check that only R_ARM_RELATIVE relocations are generated ifneq ($(CONFIG_SPL_BUILD),y) -ALL-y += checkarmreloc +# Check that only R_ARM_RELATIVE relocations are generated. +ALL-y += checkarmreloc +# The movt / movw can hardcode 16 bit parts of the addresses in the +# instruction. Relocation is not supported for that case, so disable +# such usage by requiring word relocations. +PLATFORM_CPPFLAGS += $(call cc-option, -mword-relocations) endif |