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>
This commit is contained in:
parent
ad31ff6a4f
commit
373d798394
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue